@directus/app 9.22.0 → 9.22.2

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 (1013) hide show
  1. package/dist/assets/@directus_extensions-sdk.aec02133.entry.js +1 -0
  2. package/dist/assets/{FiraMono-Medium.33e88fa9.woff2 → FiraMono-Medium-33e88fa9.woff2} +0 -0
  3. package/dist/assets/{FiraMono-Medium.f2ff9941.woff → FiraMono-Medium-f2ff9941.woff} +0 -0
  4. package/dist/assets/{Inter-Black.5ab3de07.woff2 → Inter-Black-5ab3de07.woff2} +0 -0
  5. package/dist/assets/{Inter-Black.f11705b0.woff → Inter-Black-f11705b0.woff} +0 -0
  6. package/dist/assets/{Inter-Bold.cd06b48a.woff → Inter-Bold-cd06b48a.woff} +0 -0
  7. package/dist/assets/{Inter-Bold.f0f54a06.woff2 → Inter-Bold-f0f54a06.woff2} +0 -0
  8. package/dist/assets/{Inter-Medium.a4e1e7e6.woff2 → Inter-Medium-a4e1e7e6.woff2} +0 -0
  9. package/dist/assets/{Inter-Medium.f500bbb9.woff → Inter-Medium-f500bbb9.woff} +0 -0
  10. package/dist/assets/{Inter-MediumItalic.d06751dd.woff → Inter-MediumItalic-d06751dd.woff} +0 -0
  11. package/dist/assets/{Inter-MediumItalic.d4a7f5d9.woff2 → Inter-MediumItalic-d4a7f5d9.woff2} +0 -0
  12. package/dist/assets/{Inter-Regular.b825f1bc.woff → Inter-Regular-b825f1bc.woff} +0 -0
  13. package/dist/assets/{Inter-Regular.c342b1b7.woff2 → Inter-Regular-c342b1b7.woff2} +0 -0
  14. package/dist/assets/{Inter-SemiBold.3041a990.woff → Inter-SemiBold-3041a990.woff} +0 -0
  15. package/dist/assets/{Inter-SemiBold.af44b8a2.woff2 → Inter-SemiBold-af44b8a2.woff2} +0 -0
  16. package/dist/assets/accounts-4ac11ac0.js +1 -0
  17. package/dist/assets/active-line-14a30d47.js +1 -0
  18. package/dist/assets/activity-4bbc1a74.js +80 -0
  19. package/dist/assets/activity-log-d1c5f7f9.js +1 -0
  20. package/dist/assets/add-a-recipe-a5c81989.js +1 -0
  21. package/dist/assets/af-ZA-f659d8d9.js +1 -0
  22. package/dist/assets/af-dff620ba.js +1 -0
  23. package/dist/assets/apl-f0943785.js +1 -0
  24. package/dist/assets/ar-4ef09c1d.js +1 -0
  25. package/dist/assets/ar-SA-a317daf8.js +2 -0
  26. package/dist/assets/ar-dz-e0b72fb0.js +1 -0
  27. package/dist/assets/ar-kw-68004ff3.js +1 -0
  28. package/dist/assets/ar-ly-3d3901d5.js +1 -0
  29. package/dist/assets/ar-ma-24c7c037.js +1 -0
  30. package/dist/assets/ar-sa-fc93a307.js +1 -0
  31. package/dist/assets/ar-tn-e5d6130c.js +1 -0
  32. package/dist/assets/architecture-b6b25b37.js +1 -0
  33. package/dist/assets/asciiarmor-efba4ceb.js +1 -0
  34. package/dist/assets/asn.1-e0c0f9b2.js +1 -0
  35. package/dist/assets/asterisk-3acca32f.js +1 -0
  36. package/dist/assets/authentication-67696c0d.js +74 -0
  37. package/dist/assets/autorefresh-1d27e9bc.js +1 -0
  38. package/dist/assets/{avatar-placeholder.446bf113.svg → avatar-placeholder-446bf113.svg} +0 -0
  39. package/dist/assets/az-9c8fa2c1.js +1 -0
  40. package/dist/assets/backing-directus-08c7a0b1.js +1 -0
  41. package/dist/assets/basic-workflows-17f0fecc.js +1 -0
  42. package/dist/assets/bg-BG-e2fdc54a.js +1 -0
  43. package/dist/assets/bg-d4b1d0ff.js +1 -0
  44. package/dist/assets/bn-18179eab.js +1 -0
  45. package/dist/assets/bn-IN-e39e4d6b.js +1 -0
  46. package/dist/assets/br-FR-405af7cf.js +1 -0
  47. package/dist/assets/brainfuck-9b66761b.js +1 -0
  48. package/dist/assets/bs-34672f31.js +1 -0
  49. package/dist/assets/bs-BA-a197e8e7.js +1 -0
  50. package/dist/assets/build-a-content-hierarchy-72d06925.js +97 -0
  51. package/dist/assets/ca-27186898.js +1 -0
  52. package/dist/assets/ca-ES-56a61558.js +1 -0
  53. package/dist/assets/ckb-IR-656c0d4a.js +1 -0
  54. package/dist/assets/cli-d01461e2.js +19 -0
  55. package/dist/assets/clike-057af5d3.js +1 -0
  56. package/dist/assets/clojure-dbacbe6b.js +1 -0
  57. package/dist/assets/cmake-a827da16.js +1 -0
  58. package/dist/assets/cobol-aa87734c.js +1 -0
  59. package/dist/assets/codebase-overview-faeffd53.js +1 -0
  60. package/dist/assets/coffeescript-0b9b2333.js +1 -0
  61. package/dist/assets/collections-20d2d5bb.js +106 -0
  62. package/dist/assets/collections-9763e362.js +2 -0
  63. package/dist/assets/collections-bc19d5d3.js +2 -0
  64. package/dist/assets/commonlisp-03770342.js +1 -0
  65. package/dist/assets/conditions-533313f8.js +1 -0
  66. package/dist/assets/config-options-da189d49.js +153 -0
  67. package/dist/assets/configure-user-registration-9a777081.js +1 -0
  68. package/dist/assets/content-22cfff07.js +1 -0
  69. package/dist/assets/creating-extensions-27cdd1dc.js +13 -0
  70. package/dist/assets/crystal-70b68b77.js +1 -0
  71. package/dist/assets/cs-39629672.js +1 -0
  72. package/dist/assets/cs-CZ-176dc05a.js +1 -0
  73. package/dist/assets/css-e668f6a4.js +1 -0
  74. package/dist/assets/cy-9d9f8fa4.js +1 -0
  75. package/dist/assets/cypher-0d2d64e1.js +4 -0
  76. package/dist/assets/d-a04d6ea4.js +1 -0
  77. package/dist/assets/da-0174d882.js +1 -0
  78. package/dist/assets/da-DK-b0201dc3.js +1 -0
  79. package/dist/assets/dart-324fa073.js +1 -0
  80. package/dist/assets/dashboards-bb293642.js +153 -0
  81. package/dist/assets/data-model-4aa09dee.js +45 -0
  82. package/dist/assets/de-35ac3922.js +1 -0
  83. package/dist/assets/de-DE-b8c985e4.js +1 -0
  84. package/dist/assets/de-at-9d4c825a.js +1 -0
  85. package/dist/assets/diff-97177ae2.js +1 -0
  86. package/dist/assets/display-f31ac7fa.js +1 -0
  87. package/dist/assets/display-templates-d6fe121e.js +1 -0
  88. package/dist/assets/displays-b7ef9d83.js +49 -0
  89. package/dist/assets/django-7b7a24a7.js +1 -0
  90. package/dist/assets/docker-guide-b408b24c.js +82 -0
  91. package/dist/assets/dockerfile-3a3199fd.js +1 -0
  92. package/dist/assets/documentation-930bd684.js +1 -0
  93. package/dist/assets/dtd-65706d13.js +1 -0
  94. package/dist/assets/dylan-2addee81.js +1 -0
  95. package/dist/assets/ebnf-f33f2c43.js +1 -0
  96. package/dist/assets/ecl-c27bee34.js +1 -0
  97. package/dist/assets/eiffel-01b1b7d1.js +1 -0
  98. package/dist/assets/el-GR-73459f1e.js +1 -0
  99. package/dist/assets/el-c2fa7b47.js +1 -0
  100. package/dist/assets/elm-08f0f936.js +1 -0
  101. package/dist/assets/email-templates-22bb5926.js +2 -0
  102. package/dist/assets/en-CA-d8b5e193.js +1 -0
  103. package/dist/assets/en-GB-48cdcb94.js +1 -0
  104. package/dist/assets/en-au-a2a95c94.js +1 -0
  105. package/dist/assets/en-gb-997c9d13.js +1 -0
  106. package/dist/assets/en-nz-040e3b3a.js +1 -0
  107. package/dist/assets/endpoints-af16445b.js +27 -0
  108. package/dist/assets/eo-b3c0d686.js +1 -0
  109. package/dist/assets/erlang-580357c4.js +1 -0
  110. package/dist/assets/es-1f15d7d6.js +1 -0
  111. package/dist/assets/es-419-525ac291.js +1 -0
  112. package/dist/assets/es-CL-636ecdda.js +1 -0
  113. package/dist/assets/es-ES-43ed1eb9.js +1 -0
  114. package/dist/assets/es-MX-15fb8a56.js +1 -0
  115. package/dist/assets/es-us-df11898b.js +1 -0
  116. package/dist/assets/et-44c85aed.js +1 -0
  117. package/dist/assets/et-EE-de5c2439.js +3 -0
  118. package/dist/assets/eu-02533eef.js +1 -0
  119. package/dist/assets/extensions-7f162c97.js +12 -0
  120. package/dist/assets/fa-0e4f7755.js +1 -0
  121. package/dist/assets/fa-IR-f21358a4.js +1 -0
  122. package/dist/assets/factor-1250b325.js +1 -0
  123. package/dist/assets/faq-94861308.js +2 -0
  124. package/dist/assets/fcl-4a70953a.js +1 -0
  125. package/dist/assets/fi-FI-8f65d919.js +1 -0
  126. package/dist/assets/fi-ad683f74.js +1 -0
  127. package/dist/assets/field-d6371b5e.js +1 -0
  128. package/dist/assets/field-types-718c83a0.js +1 -0
  129. package/dist/assets/fields-3074ab9b.js +135 -0
  130. package/dist/assets/fields-8d5e2b83.js +1 -0
  131. package/dist/assets/file-library-ecfdd625.js +1 -0
  132. package/dist/assets/files-8cfacec8.js +189 -0
  133. package/dist/assets/filter-rules-c1850383.js +85 -0
  134. package/dist/assets/filters-98add050.js +1 -0
  135. package/dist/assets/flows-8049028f.js +172 -0
  136. package/dist/assets/flows-a3644650.js +51 -0
  137. package/dist/assets/flows-for-loop-a5083451.js +1 -0
  138. package/dist/assets/fo-FO-87794db5.js +1 -0
  139. package/dist/assets/folders-f6a19e2a.js +132 -0
  140. package/dist/assets/forth-4d4c78b4.js +1 -0
  141. package/dist/assets/fortran-ad3df15c.js +1 -0
  142. package/dist/assets/fr-5cc22fb9.js +1 -0
  143. package/dist/assets/fr-CA-eca33f02.js +1 -0
  144. package/dist/assets/fr-FR-de0e652d.js +1 -0
  145. package/dist/assets/fr-ca-8fc6e828.js +1 -0
  146. package/dist/assets/fr-ch-fb646579.js +1 -0
  147. package/dist/assets/gas-c9efafd8.js +1 -0
  148. package/dist/assets/generate-work-reports-587694b7.js +1 -0
  149. package/dist/assets/gfm-7542babe.js +1 -0
  150. package/dist/assets/gherkin-23c998d5.js +1 -0
  151. package/dist/assets/github-ci-1ef723f0.js +2 -0
  152. package/dist/assets/gl-29227e91.js +1 -0
  153. package/dist/assets/glossary-c208981d.js +1 -0
  154. package/dist/assets/glossary-ebfd896d.js +1 -0
  155. package/dist/assets/go-084dcb9b.js +1 -0
  156. package/dist/assets/groovy-c774e9df.js +1 -0
  157. package/dist/assets/haml-4ee8e1df.js +1 -0
  158. package/dist/assets/handlebars-679e43a2.js +1 -0
  159. package/dist/assets/haskell-7c886a35.js +1 -0
  160. package/dist/assets/haskell-literate-889e63b3.js +1 -0
  161. package/dist/assets/haxe-4d343e8c.js +1 -0
  162. package/dist/assets/he-IL-872b3606.js +1 -0
  163. package/dist/assets/he-bfb6a9dd.js +1 -0
  164. package/dist/assets/hi-IN-57e07a39.js +1 -0
  165. package/dist/assets/hi-e5148703.js +1 -0
  166. package/dist/assets/hooks-5d91ffaf.js +87 -0
  167. package/dist/assets/hr-HR-3708d079.js +1 -0
  168. package/dist/assets/hr-e9112239.js +1 -0
  169. package/dist/assets/htmlembedded-3e3446a6.js +1 -0
  170. package/dist/assets/htmlmixed-c1402d9e.js +1 -0
  171. package/dist/assets/htmlmixed-cc09f505.js +1 -0
  172. package/dist/assets/http-50bc68bf.js +1 -0
  173. package/dist/assets/hu-98b40b95.js +1 -0
  174. package/dist/assets/hu-HU-a468ad60.js +1 -0
  175. package/dist/assets/hy-am-fa33d99c.js +1 -0
  176. package/dist/assets/id-ID-457dde04.js +1 -0
  177. package/dist/assets/id-a83e0e4e.js +1 -0
  178. package/dist/assets/idl-57f99f91.js +1 -0
  179. package/dist/assets/import-export-9adf6379.js +2 -0
  180. package/dist/assets/index-04fe765d.js +1 -0
  181. package/dist/assets/index-054248b1.js +1 -0
  182. package/dist/assets/index-064ee6d4.js +1 -0
  183. package/dist/assets/index-0b5d9c91.js +1 -0
  184. package/dist/assets/index-0c6974ab.js +1 -0
  185. package/dist/assets/index-10c0af8c.js +1 -0
  186. package/dist/assets/index-1ad55d9a.js +1 -0
  187. package/dist/assets/index-1b77db95.js +1 -0
  188. package/dist/assets/index-1e8eff86.js +1 -0
  189. package/dist/assets/index-1f3a26d3.js +1 -0
  190. package/dist/assets/index-210be997.js +1 -0
  191. package/dist/assets/index-2a1f5121.js +1 -0
  192. package/dist/assets/index-2c004113.js +1 -0
  193. package/dist/assets/index-2c40ac97.js +1 -0
  194. package/dist/assets/index-2de17605.js +1 -0
  195. package/dist/assets/index-31f8e390.js +1 -0
  196. package/dist/assets/index-32c296c4.css +1 -0
  197. package/dist/assets/index-381dff60.js +1 -0
  198. package/dist/assets/index-399a56ad.js +1 -0
  199. package/dist/assets/index-3bfb4358.js +1 -0
  200. package/dist/assets/index-3c095a04.js +1 -0
  201. package/dist/assets/index-3dee9c02.js +1 -0
  202. package/dist/assets/index-3e45f799.js +1 -0
  203. package/dist/assets/index-455161c9.js +1 -0
  204. package/dist/assets/index-49b29ce6.js +1 -0
  205. package/dist/assets/index-4d61b570.js +1 -0
  206. package/dist/assets/index-4d9748f7.js +1 -0
  207. package/dist/assets/index-56b38285.js +1 -0
  208. package/dist/assets/index-57f0f3db.js +1 -0
  209. package/dist/assets/index-5d4af90c.js +1 -0
  210. package/dist/assets/index-5d4c79a5.js +1 -0
  211. package/dist/assets/index-65711c6c.js +1 -0
  212. package/dist/assets/index-68efb28a.js +1 -0
  213. package/dist/assets/index-6eb39ce0.js +1 -0
  214. package/dist/assets/index-723042d6.js +1 -0
  215. package/dist/assets/index-731ded40.js +1 -0
  216. package/dist/assets/index-74d057cf.js +1 -0
  217. package/dist/assets/index-773d36d2.js +1 -0
  218. package/dist/assets/index-7b24cbe2.js +2 -0
  219. package/dist/assets/index-7be2b1c1.js +1 -0
  220. package/dist/assets/index-7e469396.js +1 -0
  221. package/dist/assets/index-7f8f1016.js +1 -0
  222. package/dist/assets/index-8405338b.js +1 -0
  223. package/dist/assets/index-88722e7a.js +1 -0
  224. package/dist/assets/index-89d0fcbc.js +1 -0
  225. package/dist/assets/index-8cabdc40.js +1 -0
  226. package/dist/assets/index-8d22fc75.js +1 -0
  227. package/dist/assets/index-8ddd457f.js +1 -0
  228. package/dist/assets/index-93bcd953.js +1 -0
  229. package/dist/assets/index-94bd61f4.js +1 -0
  230. package/dist/assets/index-95bd8f49.js +1 -0
  231. package/dist/assets/index-97f7cd06.js +1 -0
  232. package/dist/assets/index-9d18088e.js +1 -0
  233. package/dist/assets/index-9e7c6721.js +1 -0
  234. package/dist/assets/index-a06f31c2.js +1 -0
  235. package/dist/assets/index-a4653314.js +1 -0
  236. package/dist/assets/index-a4fcd661.js +1 -0
  237. package/dist/assets/index-a570b7e7.js +1 -0
  238. package/dist/assets/index-a621ba84.js +1 -0
  239. package/dist/assets/index-a6d8ed9b.js +1 -0
  240. package/dist/assets/index-a7f3a99c.js +1 -0
  241. package/dist/assets/index-aac2fb1f.js +1 -0
  242. package/dist/assets/index-ab96b485.js +1 -0
  243. package/dist/assets/index-b1273b30.js +1 -0
  244. package/dist/assets/index-b4174128.js +1 -0
  245. package/dist/assets/index-b4b202ee.js +1 -0
  246. package/dist/assets/index-b722742a.js +1 -0
  247. package/dist/assets/index-b9586aae.css +1 -0
  248. package/dist/assets/index-b99c7256.js +1 -0
  249. package/dist/assets/index-be958c60.js +1 -0
  250. package/dist/assets/index-bea0d0c4.js +1 -0
  251. package/dist/assets/index-c2e23522.js +1 -0
  252. package/dist/assets/index-c3455229.js +1 -0
  253. package/dist/assets/index-c3a91b89.js +1 -0
  254. package/dist/assets/index-c401f18b.js +1 -0
  255. package/dist/assets/index-cd769314.js +1 -0
  256. package/dist/assets/index-d0e21d63.js +1 -0
  257. package/dist/assets/index-d1c8bce8.js +1 -0
  258. package/dist/assets/index-d29aa727.js +1 -0
  259. package/dist/assets/index-d4e83d3b.js +1 -0
  260. package/dist/assets/index-e115880b.js +1 -0
  261. package/dist/assets/index-e3ea74e6.js +26 -0
  262. package/dist/assets/index-e7eb341c.js +1 -0
  263. package/dist/assets/index-e9793b07.js +1 -0
  264. package/dist/assets/index-e9d2a8bf.js +1 -0
  265. package/dist/assets/index-e9f13b36.js +1 -0
  266. package/dist/assets/index-eaa33622.js +1 -0
  267. package/dist/assets/index-ec150a0e.js +1 -0
  268. package/dist/assets/index-f3591683.js +1 -0
  269. package/dist/assets/index-f3971ca0.js +1 -0
  270. package/dist/assets/index-f676c843.js +1 -0
  271. package/dist/assets/index-f71e96b8.js +1 -0
  272. package/dist/assets/index-fcbe91b3.js +1 -0
  273. package/dist/assets/index.5b245cc4.entry.js +3572 -0
  274. package/dist/assets/input-rich-text-html-60fcb092.js +239 -0
  275. package/dist/assets/{input-rich-text-html.c4add538.css → input-rich-text-html-c4add538.css} +0 -0
  276. package/dist/assets/insights-9aa69aad.js +3 -0
  277. package/dist/assets/interface-fc1f39bf.js +1 -0
  278. package/dist/assets/interfaces-b1181d73.js +46 -0
  279. package/dist/assets/introduction-1ed6cd7f.js +1 -0
  280. package/dist/assets/introduction-423bac02.js +1 -0
  281. package/dist/assets/introduction-94e8cd96.js +90 -0
  282. package/dist/assets/introduction-c1406751.js +1 -0
  283. package/dist/assets/is-7b906e7d.js +1 -0
  284. package/dist/assets/is-IS-ddcd44b2.js +1 -0
  285. package/dist/assets/it-IT-ef2400fa.js +1 -0
  286. package/dist/assets/it-e890d75e.js +1 -0
  287. package/dist/assets/items-2b67adc0.js +1 -0
  288. package/dist/assets/items-cdb808f9.js +136 -0
  289. package/dist/assets/ja-6a964375.js +1 -0
  290. package/dist/assets/ja-JP-e0a6f25c.js +1 -0
  291. package/dist/assets/javascript-15da7e56.js +1 -0
  292. package/dist/assets/javascript-hint-c34fc511.js +1 -0
  293. package/dist/assets/jinja2-a4533d51.js +1 -0
  294. package/dist/assets/jsonlint-a726fab6.js +8 -0
  295. package/dist/assets/jsx-e8fab929.js +1 -0
  296. package/dist/assets/julia-df512f22.js +1 -0
  297. package/dist/assets/ka-35b18f09.js +1 -0
  298. package/dist/assets/ka-GE-abfc564f.js +1 -0
  299. package/dist/assets/kk-e5ef0012.js +1 -0
  300. package/dist/assets/{kmr-TR.2c6e59b8.js → km-KH-15cb5446.js} +0 -0
  301. package/dist/assets/kmr-TR-15cb5446.js +1 -0
  302. package/dist/assets/ko-4e7896ac.js +1 -0
  303. package/dist/assets/ko-KR-7bce65d1.js +1 -0
  304. package/dist/assets/ku-TR-b57d2d66.js +1 -0
  305. package/dist/assets/layouts-271c81c4.js +54 -0
  306. package/dist/assets/layouts-930ff8f4.js +2 -0
  307. package/dist/assets/lb-8d116026.js +1 -0
  308. package/dist/assets/livescript-d67d6f96.js +1 -0
  309. package/dist/assets/{logo.eba1b355.svg → logo-eba1b355.svg} +0 -0
  310. package/dist/assets/{logo-light.7a327cdd.svg → logo-light-7a327cdd.svg} +0 -0
  311. package/dist/assets/lt-81f867b9.js +1 -0
  312. package/dist/assets/lt-LT-2bee7d25.js +1 -0
  313. package/dist/assets/lua-72d6f959.js +1 -0
  314. package/dist/assets/lv-74618824.js +1 -0
  315. package/dist/assets/mark-selection-2261ba26.js +1 -0
  316. package/dist/assets/match-highlighter-f5f275e7.js +1 -0
  317. package/dist/assets/matchbrackets-5af97f5c.js +1 -0
  318. package/dist/assets/{material-icons.0c67479a.woff2 → material-icons-0c67479a.woff2} +0 -0
  319. package/dist/assets/{material-icons-outline.32738b64.woff2 → material-icons-outline-32738b64.woff2} +0 -0
  320. package/dist/assets/mathematica-c0a96b8b.js +1 -0
  321. package/dist/assets/mbox-3f885098.js +1 -0
  322. package/dist/assets/{merriweather-bold.3e45b7e7.woff → merriweather-bold-3e45b7e7.woff} +0 -0
  323. package/dist/assets/{merriweather-bold.8c5b2abc.woff2 → merriweather-bold-8c5b2abc.woff2} +0 -0
  324. package/dist/assets/{merriweather-italic.bbef4854.woff → merriweather-italic-bbef4854.woff} +0 -0
  325. package/dist/assets/{merriweather-italic.d40a22c6.woff2 → merriweather-italic-d40a22c6.woff2} +0 -0
  326. package/dist/assets/{merriweather-light.1e84f5cb.woff2 → merriweather-light-1e84f5cb.woff2} +0 -0
  327. package/dist/assets/{merriweather-light.499d4490.woff → merriweather-light-499d4490.woff} +0 -0
  328. package/dist/assets/{merriweather-regular.2661709b.woff2 → merriweather-regular-2661709b.woff2} +0 -0
  329. package/dist/assets/{merriweather-regular.ff8db8bc.woff → merriweather-regular-ff8db8bc.woff} +0 -0
  330. package/dist/assets/migrations-fb2b0b18.js +19 -0
  331. package/dist/assets/mirc-085bed16.js +1 -0
  332. package/dist/assets/mk-24081179.js +1 -0
  333. package/dist/assets/mllike-35efdbc7.js +1 -0
  334. package/dist/assets/mn-MN-de0ae6eb.js +1 -0
  335. package/dist/assets/modelica-217463f4.js +1 -0
  336. package/dist/assets/modules-db66f055.js +69 -0
  337. package/dist/assets/ms-72b2477f.js +1 -0
  338. package/dist/assets/{ms-MY.e6553dad.js → ms-MY-fa8dd132.js} +0 -0
  339. package/dist/assets/mscgen-ec812de1.js +1 -0
  340. package/dist/assets/multi-sig-data-access-2fba9900.js +1 -0
  341. package/dist/assets/multiplex-2e1dc552.js +3 -0
  342. package/dist/assets/mumps-5e37b68a.js +1 -0
  343. package/dist/assets/nb-c98d6d26.js +1 -0
  344. package/dist/assets/ne-7f2ecdd3.js +1 -0
  345. package/dist/assets/ne-NP-7e207f06.js +1 -0
  346. package/dist/assets/nginx-e9e868d8.js +1 -0
  347. package/dist/assets/nl-NL-342abb4e.js +1 -0
  348. package/dist/assets/nl-e6663d97.js +1 -0
  349. package/dist/assets/nn-b86d6b60.js +1 -0
  350. package/dist/assets/no-NO-bc8d1413.js +1 -0
  351. package/dist/assets/notifications-344fc0bd.js +153 -0
  352. package/dist/assets/nsis-37cbe223.js +1 -0
  353. package/dist/assets/ntriples-642e5b19.js +1 -0
  354. package/dist/assets/octave-c91c752f.js +1 -0
  355. package/dist/assets/operations-b7e7c226.js +169 -0
  356. package/dist/assets/operations-f642d037.js +29 -0
  357. package/dist/assets/operations-f83dba54.js +30 -0
  358. package/dist/assets/overlay-4260f55c.js +1 -0
  359. package/dist/assets/overview-54e86f22.js +1 -0
  360. package/dist/assets/overview-82a3c808.js +1 -0
  361. package/dist/assets/overview-923246fb.js +1 -0
  362. package/dist/assets/oz-2586602f.js +1 -0
  363. package/dist/assets/panels-42e3f60d.js +65 -0
  364. package/dist/assets/panels-901df70f.js +160 -0
  365. package/dist/assets/pascal-2fcdfb7d.js +1 -0
  366. package/dist/assets/pegjs-cf6e742c.js +1 -0
  367. package/dist/assets/perl-f3e4482e.js +1 -0
  368. package/dist/assets/permissions-6ca7bbc7.js +1 -0
  369. package/dist/assets/permissions-d3b1436d.js +178 -0
  370. package/dist/assets/personal-portfolio-using-m2a-3e41412c.js +11 -0
  371. package/dist/assets/php-325ef7a1.js +1 -0
  372. package/dist/assets/pig-aeb47bba.js +1 -0
  373. package/dist/assets/pinia.9625d7ed.entry.js +5 -0
  374. package/dist/assets/pl-PL-20957ab9.js +1 -0
  375. package/dist/assets/pl-f34181d4.js +1 -0
  376. package/dist/assets/powershell-73910565.js +1 -0
  377. package/dist/assets/presets-bookmarks-2bb24db2.js +1 -0
  378. package/dist/assets/presets-cc127f11.js +164 -0
  379. package/dist/assets/project-settings-0972d9a7.js +1 -0
  380. package/dist/assets/projects-e14af9e7.js +1 -0
  381. package/dist/assets/properties-05241681.js +1 -0
  382. package/dist/assets/protobuf-09da4b9c.js +1 -0
  383. package/dist/assets/pt-57980d36.js +1 -0
  384. package/dist/assets/pt-BR-c7b98f8d.js +1 -0
  385. package/dist/assets/pt-PT-5e92d649.js +1 -0
  386. package/dist/assets/pt-br-6868d54b.js +1 -0
  387. package/dist/assets/pug-62eabbfe.js +1 -0
  388. package/dist/assets/puppet-13d25ff0.js +1 -0
  389. package/dist/assets/python-39766422.js +1 -0
  390. package/dist/assets/q-d0072566.js +1 -0
  391. package/dist/assets/query-a77a683c.js +166 -0
  392. package/dist/assets/quickstart-1a47c6b5.js +26 -0
  393. package/dist/assets/quickstart-4eb8fd60.js +9 -0
  394. package/dist/assets/r-787b0c09.js +1 -0
  395. package/dist/assets/readme-13e376ea.js +1 -0
  396. package/dist/assets/relations-0ed36a6a.js +115 -0
  397. package/dist/assets/relationship-aba70908.js +1 -0
  398. package/dist/assets/relationships-21fc3971.js +82 -0
  399. package/dist/assets/resources-e09b761e.js +1 -0
  400. package/dist/assets/revisions-b072224b.js +40 -0
  401. package/dist/assets/ro-3b7d76bf.js +1 -0
  402. package/dist/assets/ro-RO-9e77317d.js +1 -0
  403. package/dist/assets/roles-027aa7ac.js +171 -0
  404. package/dist/assets/roles-684aeeed.js +1 -0
  405. package/dist/assets/rpm-78df69ce.js +1 -0
  406. package/dist/assets/rst-db8df65a.js +1 -0
  407. package/dist/assets/ru-RU-171552bf.js +1 -0
  408. package/dist/assets/ru-df1ebcaf.js +1 -0
  409. package/dist/assets/ruby-86486ef0.js +1 -0
  410. package/dist/assets/ruby-bcfe459c.js +1 -0
  411. package/dist/assets/running-locally-37a8455c.js +24 -0
  412. package/dist/assets/runtime-core.esm-bundler-753bcc58.js +1 -0
  413. package/dist/assets/rust-fd882f37.js +1 -0
  414. package/dist/assets/sas-90bb9442.js +1 -0
  415. package/dist/assets/sass-9fce77c3.js +1 -0
  416. package/dist/assets/schema-5ce91110.js +1 -0
  417. package/dist/assets/scheme-6b308707.js +1 -0
  418. package/dist/assets/sdk-b67c4a64.js +439 -0
  419. package/dist/assets/security-a3433441.js +1 -0
  420. package/dist/assets/server-38a89f65.js +114 -0
  421. package/dist/assets/settings-4740d28a.js +1 -0
  422. package/dist/assets/settings-c44be6ce.js +73 -0
  423. package/dist/assets/shares-3e43a709.js +1 -0
  424. package/dist/assets/shell-ca487a90.js +1 -0
  425. package/dist/assets/show-hint-b91c59d1.js +1 -0
  426. package/dist/assets/{show-hint.d139d464.css → show-hint-d139d464.css} +0 -0
  427. package/dist/assets/si-LK-3efbd636.js +1 -0
  428. package/dist/assets/sieve-2b47299c.js +1 -0
  429. package/dist/assets/simple-8e6c7a47.js +1 -0
  430. package/dist/assets/sk-SK-4355010d.js +1 -0
  431. package/dist/assets/sk-bb1a0c12.js +1 -0
  432. package/dist/assets/sl-6ecdfa1a.js +1 -0
  433. package/dist/assets/sl-SI-cd1c0bbc.js +2 -0
  434. package/dist/assets/slim-faced96e.js +1 -0
  435. package/dist/assets/slugify-text-with-run-script-5867c669.js +15 -0
  436. package/dist/assets/smalltalk-a7d81d26.js +1 -0
  437. package/dist/assets/smarty-9efd4cf8.js +1 -0
  438. package/dist/assets/solr-26241a98.js +1 -0
  439. package/dist/assets/soy-17ee2e5c.js +1 -0
  440. package/dist/assets/sparql-9fcd8e73.js +1 -0
  441. package/dist/assets/spreadsheet-04063c83.js +1 -0
  442. package/dist/assets/{sprite.e37451a6.svg → sprite-e37451a6.svg} +0 -0
  443. package/dist/assets/sq-7bdd580f.js +1 -0
  444. package/dist/assets/sql-c5f6c76e.js +1 -0
  445. package/dist/assets/sr-4e809a2b.js +1 -0
  446. package/dist/assets/sr-CS-c0c71ad9.js +1 -0
  447. package/dist/assets/sr-SP-427c79ea.js +1 -0
  448. package/dist/assets/sr-cyrl-997aedd3.js +1 -0
  449. package/dist/assets/sso-examples-9f7c9151.js +78 -0
  450. package/dist/assets/sso-f2543afe.js +23 -0
  451. package/dist/assets/stex-01e3d7a7.js +1 -0
  452. package/dist/assets/stex-caff0481.js +1 -0
  453. package/dist/assets/stylus-efafff2d.js +1 -0
  454. package/dist/assets/support-84f5df99.js +1 -0
  455. package/dist/assets/sv-50072f33.js +1 -0
  456. package/dist/assets/sv-SE-0535406d.js +1 -0
  457. package/dist/assets/swift-0936ac57.js +1 -0
  458. package/dist/assets/ta-in-4071a6d4.js +1 -0
  459. package/dist/assets/tcl-82104296.js +1 -0
  460. package/dist/assets/teams-725025d5.js +1 -0
  461. package/dist/assets/template_shell-4c5120e8.js +1 -0
  462. package/dist/assets/textile-0e7a3618.js +1 -0
  463. package/dist/assets/th-7e79c1c0.js +1 -0
  464. package/dist/assets/th-TH-a106b906.js +2 -0
  465. package/dist/assets/themes-c621012f.js +5 -0
  466. package/dist/assets/tiddlywiki-fd98f3e8.js +1 -0
  467. package/dist/assets/tiki-c3129739.js +1 -0
  468. package/dist/assets/toml-1e0e2968.js +1 -0
  469. package/dist/assets/tornado-63f64d5e.js +1 -0
  470. package/dist/assets/tr-TR-5da8a3a8.js +1 -0
  471. package/dist/assets/tr-b93da499.js +1 -0
  472. package/dist/assets/translation-strings-3650c811.js +1 -0
  473. package/dist/assets/translations-7cc14527.js +1 -0
  474. package/dist/assets/translations-d688ff27.js +1 -0
  475. package/dist/assets/triggers-b7870cea.js +1 -0
  476. package/dist/assets/troff-c8f6c182.js +1 -0
  477. package/dist/assets/ttcn-62f61094.js +1 -0
  478. package/dist/assets/ttcn-cfg-4b7aaf4c.js +1 -0
  479. package/dist/assets/turtle-43dc8280.js +1 -0
  480. package/dist/assets/twig-0851dea3.js +1 -0
  481. package/dist/assets/ug-5e06bb73.js +1 -0
  482. package/dist/assets/uk-UA-e793cad5.js +1 -0
  483. package/dist/assets/uk-e5a241cc.js +1 -0
  484. package/dist/assets/upgrades-migrations-9b9a8148.js +1 -0
  485. package/dist/assets/use-sync-7318fa3d.js +29 -0
  486. package/dist/assets/user-directory-3fc6f851.js +1 -0
  487. package/dist/assets/users-039eb6fe.js +252 -0
  488. package/dist/assets/users-475ad639.js +1 -0
  489. package/dist/assets/users-roles-permissions-c0aaea95.js +1 -0
  490. package/dist/assets/utilities-0a4c2e38.js +74 -0
  491. package/dist/assets/uz-8a64d58d.js +1 -0
  492. package/dist/assets/validation-59e6bf86.js +1 -0
  493. package/dist/assets/vb-98c82b42.js +1 -0
  494. package/dist/assets/vbscript-dfc9f273.js +1 -0
  495. package/dist/assets/velocity-3aa35446.js +1 -0
  496. package/dist/assets/verilog-cbc5918b.js +1 -0
  497. package/dist/assets/vhdl-206302a3.js +1 -0
  498. package/dist/assets/vi-0980a9b2.js +1 -0
  499. package/dist/assets/vi-VN-da640ba7.js +1 -0
  500. package/dist/assets/vue-060fc6d7.js +1 -0
  501. package/dist/assets/vue-i18n.290ef83f.entry.js +23 -0
  502. package/dist/assets/vue-router.f34a6392.entry.js +5 -0
  503. package/dist/assets/vue.28c28fb6.entry.js +1 -0
  504. package/dist/assets/vue.runtime.esm-bundler-633c7be3.js +1 -0
  505. package/dist/assets/wast-42c1dede.js +1 -0
  506. package/dist/assets/webhooks-187ac080.js +147 -0
  507. package/dist/assets/webhooks-c015173f.js +1 -0
  508. package/dist/assets/webidl-b0effd88.js +1 -0
  509. package/dist/assets/xml-bc20d261.js +1 -0
  510. package/dist/assets/xquery-a256f18a.js +1 -0
  511. package/dist/assets/yacas-68cea519.js +1 -0
  512. package/dist/assets/yaml-0554b4a6.js +1 -0
  513. package/dist/assets/yaml-frontmatter-a7374983.js +1 -0
  514. package/dist/assets/z80-b3c8070d.js +1 -0
  515. package/dist/assets/zh-CN-486ad589.js +1 -0
  516. package/dist/assets/zh-TW-ad632493.js +1 -0
  517. package/dist/assets/zh-cn-e4d8a720.js +1 -0
  518. package/dist/assets/zh-tw-7742900d.js +1 -0
  519. package/dist/index.html +8 -8
  520. package/package.json +36 -36
  521. package/dist/assets/@directus_extensions-sdk.0ccd840b.entry.js +0 -1
  522. package/dist/assets/accounts.6297e415.js +0 -1
  523. package/dist/assets/active-line.8303e9ae.js +0 -1
  524. package/dist/assets/activity-log.5f3df6ee.js +0 -1
  525. package/dist/assets/activity.ecad7f24.js +0 -80
  526. package/dist/assets/add-a-recipe.9ceb23a7.js +0 -1
  527. package/dist/assets/af-ZA.2bf28c7c.js +0 -1
  528. package/dist/assets/af.e05559c5.js +0 -1
  529. package/dist/assets/apl.2a1e7ab6.js +0 -1
  530. package/dist/assets/ar-SA.c9e0c56d.js +0 -2
  531. package/dist/assets/ar-dz.66e56547.js +0 -1
  532. package/dist/assets/ar-kw.d9c72292.js +0 -1
  533. package/dist/assets/ar-ly.2893dc62.js +0 -1
  534. package/dist/assets/ar-ma.d833d5f8.js +0 -1
  535. package/dist/assets/ar-sa.d113171f.js +0 -1
  536. package/dist/assets/ar-tn.eef6c3a6.js +0 -1
  537. package/dist/assets/ar.b88ac85c.js +0 -1
  538. package/dist/assets/architecture.5ae1b9c3.js +0 -1
  539. package/dist/assets/asciiarmor.f99729c5.js +0 -1
  540. package/dist/assets/asn.1.3de56848.js +0 -1
  541. package/dist/assets/asterisk.d173653b.js +0 -1
  542. package/dist/assets/authentication.00a824ca.js +0 -74
  543. package/dist/assets/autorefresh.8c32dee5.js +0 -1
  544. package/dist/assets/aws.a7ffca20.js +0 -1
  545. package/dist/assets/az.65d5df84.js +0 -1
  546. package/dist/assets/backing-directus.1e21aca0.js +0 -1
  547. package/dist/assets/basic-workflows.11292c4c.js +0 -1
  548. package/dist/assets/bg-BG.d8bce391.js +0 -1
  549. package/dist/assets/bg.32aec9a6.js +0 -1
  550. package/dist/assets/bn-IN.598e11ba.js +0 -1
  551. package/dist/assets/bn.1a38ef68.js +0 -1
  552. package/dist/assets/br-FR.17844656.js +0 -1
  553. package/dist/assets/brainfuck.f59aeba6.js +0 -1
  554. package/dist/assets/bs-BA.7a79810f.js +0 -1
  555. package/dist/assets/bs.b7fc0054.js +0 -1
  556. package/dist/assets/build-a-content-hierarchy.c7f435d3.js +0 -97
  557. package/dist/assets/ca-ES.d21027f3.js +0 -1
  558. package/dist/assets/ca.79ae4f70.js +0 -1
  559. package/dist/assets/ckb-IR.8580ef1b.js +0 -1
  560. package/dist/assets/cli.04a6188d.js +0 -19
  561. package/dist/assets/cli.86a5dab7.js +0 -4
  562. package/dist/assets/clike.09080a05.js +0 -1
  563. package/dist/assets/clojure.443c3606.js +0 -1
  564. package/dist/assets/cloudron.74c7dd1a.js +0 -1
  565. package/dist/assets/cmake.2dbb7193.js +0 -1
  566. package/dist/assets/cobol.802b84fb.js +0 -1
  567. package/dist/assets/codebase-overview.f998a583.js +0 -1
  568. package/dist/assets/coffeescript.f2514493.js +0 -1
  569. package/dist/assets/collections.062041e9.js +0 -106
  570. package/dist/assets/collections.2bcb128b.js +0 -2
  571. package/dist/assets/collections.dc3baac2.js +0 -2
  572. package/dist/assets/commonlisp.26380e00.js +0 -1
  573. package/dist/assets/conditions.df105bd3.js +0 -1
  574. package/dist/assets/config-options.6be44dad.js +0 -151
  575. package/dist/assets/configure-user-registration.1f371a66.js +0 -1
  576. package/dist/assets/content.0c201476.js +0 -1
  577. package/dist/assets/creating-extensions.846d17ab.js +0 -13
  578. package/dist/assets/crystal.60573ee0.js +0 -1
  579. package/dist/assets/cs-CZ.7bffb9af.js +0 -1
  580. package/dist/assets/cs.131cb969.js +0 -1
  581. package/dist/assets/css.3221c28f.js +0 -1
  582. package/dist/assets/cy.cda5d998.js +0 -1
  583. package/dist/assets/cypher.456b5010.js +0 -4
  584. package/dist/assets/d.d8e90eec.js +0 -1
  585. package/dist/assets/da-DK.464a4829.js +0 -1
  586. package/dist/assets/da.c666c076.js +0 -1
  587. package/dist/assets/dart.d7b1005a.js +0 -1
  588. package/dist/assets/data-model.dbf87196.js +0 -45
  589. package/dist/assets/de-DE.a54b14b4.js +0 -1
  590. package/dist/assets/de-at.0af1a6c1.js +0 -1
  591. package/dist/assets/de.1abec11f.js +0 -1
  592. package/dist/assets/diff.d284dcd6.js +0 -1
  593. package/dist/assets/digitalocean-app-platform.324edceb.js +0 -3
  594. package/dist/assets/display-templates.e5e35a02.js +0 -1
  595. package/dist/assets/display.a3a20d82.js +0 -1
  596. package/dist/assets/displays.bacf0a84.js +0 -49
  597. package/dist/assets/django.ad801ef9.js +0 -1
  598. package/dist/assets/docker.2d92d274.js +0 -82
  599. package/dist/assets/dockerfile.04485996.js +0 -1
  600. package/dist/assets/documentation.cd7e9172.js +0 -1
  601. package/dist/assets/dtd.eabd5cc1.js +0 -1
  602. package/dist/assets/dylan.8bac1c69.js +0 -1
  603. package/dist/assets/ebnf.9497511c.js +0 -1
  604. package/dist/assets/ecl.bb96d4d0.js +0 -1
  605. package/dist/assets/eiffel.581f9138.js +0 -1
  606. package/dist/assets/el-GR.c0a3a0bf.js +0 -1
  607. package/dist/assets/el.5b03c284.js +0 -1
  608. package/dist/assets/elm.0d702735.js +0 -1
  609. package/dist/assets/email-templates.6aff68c2.js +0 -2
  610. package/dist/assets/en-CA.26fd1073.js +0 -1
  611. package/dist/assets/en-GB.cb5c306c.js +0 -1
  612. package/dist/assets/en-au.456ff62d.js +0 -1
  613. package/dist/assets/en-gb.3df73232.js +0 -1
  614. package/dist/assets/en-nz.eb3d0c4d.js +0 -1
  615. package/dist/assets/endpoints.cb21db74.js +0 -27
  616. package/dist/assets/eo.2d573f1e.js +0 -1
  617. package/dist/assets/erlang.396821a3.js +0 -1
  618. package/dist/assets/es-419.37d0e1bd.js +0 -1
  619. package/dist/assets/es-CL.879cb4a2.js +0 -1
  620. package/dist/assets/es-ES.3634d1f0.js +0 -1
  621. package/dist/assets/es-MX.30ad99ae.js +0 -1
  622. package/dist/assets/es-us.43aa257e.js +0 -1
  623. package/dist/assets/es.7bb97ab2.js +0 -1
  624. package/dist/assets/et-EE.e2a1fecb.js +0 -3
  625. package/dist/assets/et.da5088f6.js +0 -1
  626. package/dist/assets/eu.85b7226c.js +0 -1
  627. package/dist/assets/extensions.1a49a23d.js +0 -12
  628. package/dist/assets/fa-IR.b4fa34a3.js +0 -1
  629. package/dist/assets/fa.1bee6b5f.js +0 -1
  630. package/dist/assets/factor.21674adf.js +0 -1
  631. package/dist/assets/faq.4c9aec5a.js +0 -2
  632. package/dist/assets/fcl.4d6075b7.js +0 -1
  633. package/dist/assets/fi-FI.47d31bc6.js +0 -1
  634. package/dist/assets/fi.c56dc7f1.js +0 -1
  635. package/dist/assets/field-types.1234a1f1.js +0 -1
  636. package/dist/assets/field.12858af7.js +0 -1
  637. package/dist/assets/fields.1e29bef7.js +0 -135
  638. package/dist/assets/fields.dd1b854a.js +0 -1
  639. package/dist/assets/file-library.adca0306.js +0 -1
  640. package/dist/assets/files.dc7ab269.js +0 -189
  641. package/dist/assets/filter-rules.118f4702.js +0 -85
  642. package/dist/assets/filters.bbb1387c.js +0 -1
  643. package/dist/assets/flows-for-loop.52c26eba.js +0 -1
  644. package/dist/assets/flows.0d69a4cc.js +0 -46
  645. package/dist/assets/flows.86b01647.js +0 -172
  646. package/dist/assets/fo-FO.cc444b75.js +0 -1
  647. package/dist/assets/folders.9f7079f9.js +0 -132
  648. package/dist/assets/forth.d793c760.js +0 -1
  649. package/dist/assets/fortran.14681224.js +0 -1
  650. package/dist/assets/fr-CA.de73f558.js +0 -1
  651. package/dist/assets/fr-FR.5e13f541.js +0 -1
  652. package/dist/assets/fr-ca.601cb441.js +0 -1
  653. package/dist/assets/fr-ch.67bb7822.js +0 -1
  654. package/dist/assets/fr.4f97ca55.js +0 -1
  655. package/dist/assets/gas.0ada42b6.js +0 -1
  656. package/dist/assets/gcp.a3cb0373.js +0 -60
  657. package/dist/assets/generate-work-reports.4d11e331.js +0 -1
  658. package/dist/assets/gfm.659ace69.js +0 -1
  659. package/dist/assets/gherkin.59bb344b.js +0 -1
  660. package/dist/assets/github-ci.1128e8d6.js +0 -2
  661. package/dist/assets/gl.87af25c9.js +0 -1
  662. package/dist/assets/glossary.88bccebd.js +0 -1
  663. package/dist/assets/glossary.fdb88ced.js +0 -1
  664. package/dist/assets/go.9e506975.js +0 -1
  665. package/dist/assets/groovy.ce4e105d.js +0 -1
  666. package/dist/assets/haml.05a1ec98.js +0 -1
  667. package/dist/assets/handlebars.d5033d5e.js +0 -1
  668. package/dist/assets/haskell-literate.64468689.js +0 -1
  669. package/dist/assets/haskell.3ddac2c6.js +0 -1
  670. package/dist/assets/haxe.c31ef7e9.js +0 -1
  671. package/dist/assets/he-IL.767fa735.js +0 -1
  672. package/dist/assets/he.039f7e1a.js +0 -1
  673. package/dist/assets/hi-IN.dcb8bbe2.js +0 -1
  674. package/dist/assets/hi.f87d7574.js +0 -1
  675. package/dist/assets/hooks.06f4901f.js +0 -87
  676. package/dist/assets/hr-HR.1d062e06.js +0 -1
  677. package/dist/assets/hr.38926dee.js +0 -1
  678. package/dist/assets/htmlembedded.fe165a50.js +0 -1
  679. package/dist/assets/htmlmixed.9c2f70fb.js +0 -1
  680. package/dist/assets/htmlmixed.cba780a9.js +0 -1
  681. package/dist/assets/http.9a553426.js +0 -1
  682. package/dist/assets/hu-HU.23fef977.js +0 -1
  683. package/dist/assets/hu.2a1785d5.js +0 -1
  684. package/dist/assets/hy-am.c0130972.js +0 -1
  685. package/dist/assets/id-ID.626b885e.js +0 -1
  686. package/dist/assets/id.27d3f426.js +0 -1
  687. package/dist/assets/idl.0304eefa.js +0 -1
  688. package/dist/assets/iis.1055825b.js +0 -27
  689. package/dist/assets/import-export.a0ab8057.js +0 -2
  690. package/dist/assets/index.0510329a.js +0 -1
  691. package/dist/assets/index.07461453.js +0 -1
  692. package/dist/assets/index.07fc9cdb.js +0 -1
  693. package/dist/assets/index.0b195cc7.js +0 -1
  694. package/dist/assets/index.0f60c616.js +0 -1
  695. package/dist/assets/index.11a9da15.js +0 -26
  696. package/dist/assets/index.124b64aa.js +0 -1
  697. package/dist/assets/index.130bec89.js +0 -1
  698. package/dist/assets/index.13585b97.js +0 -1
  699. package/dist/assets/index.14a135ff.js +0 -1
  700. package/dist/assets/index.1708eaff.js +0 -1
  701. package/dist/assets/index.1e030ff7.js +0 -1
  702. package/dist/assets/index.1fd0f1cb.js +0 -1
  703. package/dist/assets/index.209a861d.js +0 -1
  704. package/dist/assets/index.2473a8cb.js +0 -1
  705. package/dist/assets/index.2b98ae99.js +0 -1
  706. package/dist/assets/index.2da30b1e.js +0 -1
  707. package/dist/assets/index.30672573.js +0 -1
  708. package/dist/assets/index.30bc59d5.js +0 -1
  709. package/dist/assets/index.32d09ff6.js +0 -1
  710. package/dist/assets/index.3316d926.js +0 -1
  711. package/dist/assets/index.344009b9.js +0 -1
  712. package/dist/assets/index.36e6c9c6.js +0 -1
  713. package/dist/assets/index.3c2d2f28.js +0 -1
  714. package/dist/assets/index.3cd692f4.js +0 -1
  715. package/dist/assets/index.3d5c264a.js +0 -1
  716. package/dist/assets/index.40355ab3.js +0 -1
  717. package/dist/assets/index.45bd0bab.js +0 -1
  718. package/dist/assets/index.4772c73a.js +0 -1
  719. package/dist/assets/index.481cef97.js +0 -1
  720. package/dist/assets/index.486d2358.js +0 -1
  721. package/dist/assets/index.48d256fe.js +0 -1
  722. package/dist/assets/index.4b4406cc.js +0 -1
  723. package/dist/assets/index.506cc44b.js +0 -1
  724. package/dist/assets/index.52064361.js +0 -1
  725. package/dist/assets/index.5240d9b5.js +0 -1
  726. package/dist/assets/index.5252069d.js +0 -1
  727. package/dist/assets/index.591db1fa.js +0 -1
  728. package/dist/assets/index.5a98ab12.css +0 -1
  729. package/dist/assets/index.5ad6a3dd.js +0 -1
  730. package/dist/assets/index.5b812943.js +0 -1
  731. package/dist/assets/index.5bdc1da7.js +0 -1
  732. package/dist/assets/index.5f17521a.js +0 -1
  733. package/dist/assets/index.5fed6846.js +0 -1
  734. package/dist/assets/index.614238fe.js +0 -1
  735. package/dist/assets/index.6199308d.js +0 -1
  736. package/dist/assets/index.63655798.js +0 -1
  737. package/dist/assets/index.654391bd.js +0 -1
  738. package/dist/assets/index.67552c8a.js +0 -1
  739. package/dist/assets/index.68a46470.js +0 -1
  740. package/dist/assets/index.699cb0fb.js +0 -1
  741. package/dist/assets/index.6c7bac54.js +0 -1
  742. package/dist/assets/index.6f12727d.js +0 -1
  743. package/dist/assets/index.739bdf68.js +0 -1
  744. package/dist/assets/index.74be4359.js +0 -1
  745. package/dist/assets/index.75287e44.js +0 -1
  746. package/dist/assets/index.78877765.js +0 -1
  747. package/dist/assets/index.80c4330c.js +0 -1
  748. package/dist/assets/index.880e71b1.js +0 -1
  749. package/dist/assets/index.8b75b664.js +0 -1
  750. package/dist/assets/index.8dcbd6dd.js +0 -1
  751. package/dist/assets/index.8f441a00.js +0 -1
  752. package/dist/assets/index.8ffa4e57.js +0 -1
  753. package/dist/assets/index.9246e3c6.js +0 -1
  754. package/dist/assets/index.9250c6d1.entry.js +0 -3597
  755. package/dist/assets/index.92b654af.js +0 -1
  756. package/dist/assets/index.97b9cfbc.js +0 -1
  757. package/dist/assets/index.99f88ce2.js +0 -1
  758. package/dist/assets/index.9bdfd349.css +0 -1
  759. package/dist/assets/index.9de22eb4.js +0 -1
  760. package/dist/assets/index.9f4729d8.js +0 -1
  761. package/dist/assets/index.a365304f.js +0 -2
  762. package/dist/assets/index.ac22cc1b.js +0 -1
  763. package/dist/assets/index.ad0348f9.js +0 -1
  764. package/dist/assets/index.ad2f7063.js +0 -1
  765. package/dist/assets/index.b07d44be.js +0 -1
  766. package/dist/assets/index.b08033ea.js +0 -1
  767. package/dist/assets/index.b1efa6a4.js +0 -1
  768. package/dist/assets/index.b6c4c6e1.js +0 -1
  769. package/dist/assets/index.ba07ca0b.js +0 -1
  770. package/dist/assets/index.c05e0290.js +0 -1
  771. package/dist/assets/index.c4497b0d.js +0 -1
  772. package/dist/assets/index.d2f27735.js +0 -1
  773. package/dist/assets/index.d9fbe812.js +0 -1
  774. package/dist/assets/index.de87289c.js +0 -1
  775. package/dist/assets/index.e01c5899.js +0 -1
  776. package/dist/assets/index.e0fd62f8.js +0 -1
  777. package/dist/assets/index.edd0222a.js +0 -1
  778. package/dist/assets/index.ef3da9e5.js +0 -1
  779. package/dist/assets/index.f11112ce.js +0 -1
  780. package/dist/assets/index.f1494379.js +0 -1
  781. package/dist/assets/index.f43f4b21.js +0 -1
  782. package/dist/assets/index.f98dabe9.js +0 -1
  783. package/dist/assets/index.fb047c40.js +0 -1
  784. package/dist/assets/input-rich-text-html.d041662c.js +0 -239
  785. package/dist/assets/insights.79b6bb41.js +0 -3
  786. package/dist/assets/installation.dac5d305.js +0 -1
  787. package/dist/assets/interface.c6e98a8d.js +0 -1
  788. package/dist/assets/interfaces.1cededb9.js +0 -46
  789. package/dist/assets/introduction.7e22ae52.js +0 -1
  790. package/dist/assets/introduction.8311150c.js +0 -90
  791. package/dist/assets/introduction.a4ce02bd.js +0 -1
  792. package/dist/assets/introduction.d716e9e9.js +0 -1
  793. package/dist/assets/is-IS.de933c2f.js +0 -1
  794. package/dist/assets/is.9f22583b.js +0 -1
  795. package/dist/assets/it-IT.fabfc1f3.js +0 -1
  796. package/dist/assets/it.9df5fefe.js +0 -1
  797. package/dist/assets/items.0cdbeb33.js +0 -136
  798. package/dist/assets/items.df7c548b.js +0 -1
  799. package/dist/assets/ja-JP.58bc5b03.js +0 -1
  800. package/dist/assets/ja.11f14636.js +0 -1
  801. package/dist/assets/javascript-hint.b61493c5.js +0 -1
  802. package/dist/assets/javascript.5e03fe39.js +0 -1
  803. package/dist/assets/jinja2.52ae48d7.js +0 -1
  804. package/dist/assets/jsonlint.aceff66c.js +0 -8
  805. package/dist/assets/jsx.0bafe1d4.js +0 -1
  806. package/dist/assets/julia.c2cc69e5.js +0 -1
  807. package/dist/assets/ka-GE.aa0d4cf4.js +0 -1
  808. package/dist/assets/ka.383a4f32.js +0 -1
  809. package/dist/assets/kk.a651980b.js +0 -1
  810. package/dist/assets/ko-KR.4b310e63.js +0 -1
  811. package/dist/assets/ko.cdc7d437.js +0 -1
  812. package/dist/assets/ku-TR.ad6b2677.js +0 -1
  813. package/dist/assets/layouts.267cb4de.js +0 -2
  814. package/dist/assets/layouts.48ea5cf6.js +0 -54
  815. package/dist/assets/lb.0165d7ed.js +0 -1
  816. package/dist/assets/livescript.ef82f09e.js +0 -1
  817. package/dist/assets/lt-LT.18f09ae6.js +0 -1
  818. package/dist/assets/lt.96d7dac8.js +0 -1
  819. package/dist/assets/lua.07cd417d.js +0 -1
  820. package/dist/assets/lv.3485bdf4.js +0 -1
  821. package/dist/assets/manual.1ebea569.js +0 -12
  822. package/dist/assets/mark-selection.78994276.js +0 -1
  823. package/dist/assets/match-highlighter.b0638730.js +0 -1
  824. package/dist/assets/matchbrackets.a1725d07.js +0 -1
  825. package/dist/assets/mathematica.3b5ec972.js +0 -1
  826. package/dist/assets/mbox.b242ab5e.js +0 -1
  827. package/dist/assets/migrations.af0dca0d.js +0 -19
  828. package/dist/assets/mirc.c11bdb00.js +0 -1
  829. package/dist/assets/mk.5eaf9394.js +0 -1
  830. package/dist/assets/mllike.d4808674.js +0 -1
  831. package/dist/assets/mn-MN.c504a096.js +0 -1
  832. package/dist/assets/modelica.8b85fc14.js +0 -1
  833. package/dist/assets/modules.a49b1412.js +0 -69
  834. package/dist/assets/ms.c1bfb0b7.js +0 -1
  835. package/dist/assets/mscgen.eff8624b.js +0 -1
  836. package/dist/assets/multi-sig-data-access.360528a4.js +0 -1
  837. package/dist/assets/multiplex.947b0646.js +0 -3
  838. package/dist/assets/mumps.c8158dbf.js +0 -1
  839. package/dist/assets/nb.dd2d92ae.js +0 -1
  840. package/dist/assets/ne-NP.2361e293.js +0 -1
  841. package/dist/assets/ne.0793cdad.js +0 -1
  842. package/dist/assets/nginx.7b545a6f.js +0 -1
  843. package/dist/assets/nl-NL.bb799348.js +0 -1
  844. package/dist/assets/nl.5e2d17f8.js +0 -1
  845. package/dist/assets/nn.2f72e720.js +0 -1
  846. package/dist/assets/no-NO.5c9edcd0.js +0 -1
  847. package/dist/assets/notifications.a5c13635.js +0 -153
  848. package/dist/assets/nsis.3f2d50d7.js +0 -1
  849. package/dist/assets/ntriples.9440fe08.js +0 -1
  850. package/dist/assets/octave.b1932bd4.js +0 -1
  851. package/dist/assets/operations.2a3f0f1d.js +0 -29
  852. package/dist/assets/operations.3f7c1d38.js +0 -30
  853. package/dist/assets/operations.5920032a.js +0 -169
  854. package/dist/assets/overlay.4df1a79a.js +0 -1
  855. package/dist/assets/overview.18971b6f.js +0 -1
  856. package/dist/assets/overview.222aec7c.js +0 -1
  857. package/dist/assets/overview.d2530651.js +0 -1
  858. package/dist/assets/oz.3ad42b2a.js +0 -1
  859. package/dist/assets/panels.01f759e8.js +0 -65
  860. package/dist/assets/pascal.b40d6dce.js +0 -1
  861. package/dist/assets/pegjs.70270653.js +0 -1
  862. package/dist/assets/perl.67c33057.js +0 -1
  863. package/dist/assets/permissions.4fb30c52.js +0 -178
  864. package/dist/assets/permissions.df8c3908.js +0 -1
  865. package/dist/assets/personal-portfolio-using-m2a.6697d008.js +0 -11
  866. package/dist/assets/php.e2dcbfcc.js +0 -1
  867. package/dist/assets/pig.f0f7d5cf.js +0 -1
  868. package/dist/assets/pinia.0d44ec62.entry.js +0 -5
  869. package/dist/assets/pl-PL.01cf6aca.js +0 -1
  870. package/dist/assets/pl.2a68b868.js +0 -1
  871. package/dist/assets/plesk.211f147c.js +0 -27
  872. package/dist/assets/powershell.6eb96e82.js +0 -1
  873. package/dist/assets/presets-bookmarks.06a996e4.js +0 -1
  874. package/dist/assets/presets.8964f63c.js +0 -164
  875. package/dist/assets/project-settings.a1dc40c5.js +0 -1
  876. package/dist/assets/projects.257c1608.js +0 -1
  877. package/dist/assets/properties.be1e1d62.js +0 -1
  878. package/dist/assets/protobuf.47940b8f.js +0 -1
  879. package/dist/assets/pt-BR.2c2e8c4f.js +0 -1
  880. package/dist/assets/pt-PT.b058b0cc.js +0 -1
  881. package/dist/assets/pt-br.c97cd258.js +0 -1
  882. package/dist/assets/pt.c51baacb.js +0 -1
  883. package/dist/assets/pug.6421faaf.js +0 -1
  884. package/dist/assets/puppet.d0e97a64.js +0 -1
  885. package/dist/assets/python.7c0a57f0.js +0 -1
  886. package/dist/assets/q.aa0d6145.js +0 -1
  887. package/dist/assets/query.3a5366a5.js +0 -165
  888. package/dist/assets/quickstart.78b6824c.js +0 -26
  889. package/dist/assets/quickstart.88a09faf.js +0 -9
  890. package/dist/assets/r.2acd20f3.js +0 -1
  891. package/dist/assets/readme.22afc5cd.js +0 -1
  892. package/dist/assets/relations.082dd25f.js +0 -115
  893. package/dist/assets/relationship.27df541c.js +0 -1
  894. package/dist/assets/relationships.8f21fc7f.js +0 -82
  895. package/dist/assets/resources.974e5ab9.js +0 -1
  896. package/dist/assets/revisions.c7928011.js +0 -40
  897. package/dist/assets/ro-RO.4c33f715.js +0 -1
  898. package/dist/assets/ro.8a0f69d8.js +0 -1
  899. package/dist/assets/roles.077fb08f.js +0 -1
  900. package/dist/assets/roles.57e7cf43.js +0 -171
  901. package/dist/assets/rpm.e594571d.js +0 -1
  902. package/dist/assets/rst.505c5a6c.js +0 -1
  903. package/dist/assets/ru-RU.1affd9bb.js +0 -1
  904. package/dist/assets/ru.687e2e6b.js +0 -1
  905. package/dist/assets/ruby.3a4257bc.js +0 -1
  906. package/dist/assets/ruby.58f8ad67.js +0 -1
  907. package/dist/assets/running-locally.df40dfc8.js +0 -24
  908. package/dist/assets/runtime-core.esm-bundler.22ec0346.js +0 -1
  909. package/dist/assets/rust.6ccfadb2.js +0 -1
  910. package/dist/assets/sas.abe5df08.js +0 -1
  911. package/dist/assets/sass.ef6a782e.js +0 -1
  912. package/dist/assets/schema.09c131b1.js +0 -1
  913. package/dist/assets/scheme.e17c2f29.js +0 -1
  914. package/dist/assets/sdk.14c9aa74.js +0 -402
  915. package/dist/assets/security.d4d02696.js +0 -1
  916. package/dist/assets/server.5bb7cb25.js +0 -114
  917. package/dist/assets/settings.c76ef466.js +0 -73
  918. package/dist/assets/settings.fd40cf40.js +0 -1
  919. package/dist/assets/shares.4e3f41cf.js +0 -1
  920. package/dist/assets/shell.e7026cb0.js +0 -1
  921. package/dist/assets/show-hint.38647069.js +0 -1
  922. package/dist/assets/si-LK.f9ef55b1.js +0 -1
  923. package/dist/assets/sieve.d56f5264.js +0 -1
  924. package/dist/assets/simple.1606e663.js +0 -1
  925. package/dist/assets/sk-SK.5761e1d9.js +0 -1
  926. package/dist/assets/sk.ff03700a.js +0 -1
  927. package/dist/assets/sl-SI.4e2a1720.js +0 -2
  928. package/dist/assets/sl.dc02848e.js +0 -1
  929. package/dist/assets/slim.7930d861.js +0 -1
  930. package/dist/assets/slugify-text-with-run-script.199712ff.js +0 -15
  931. package/dist/assets/smalltalk.1e3eb340.js +0 -1
  932. package/dist/assets/smarty.a6289baf.js +0 -1
  933. package/dist/assets/solr.41d6f713.js +0 -1
  934. package/dist/assets/soy.b0660be3.js +0 -1
  935. package/dist/assets/sparql.3634d1be.js +0 -1
  936. package/dist/assets/spreadsheet.1dca4a84.js +0 -1
  937. package/dist/assets/sq.e9ac730b.js +0 -1
  938. package/dist/assets/sql.7fb35473.js +0 -1
  939. package/dist/assets/sr-CS.607e2fd0.js +0 -1
  940. package/dist/assets/sr-SP.3f95d056.js +0 -1
  941. package/dist/assets/sr-cyrl.3a10357c.js +0 -1
  942. package/dist/assets/sr.8d2d9e54.js +0 -1
  943. package/dist/assets/sso-examples.89c3e7e8.js +0 -66
  944. package/dist/assets/sso.015acbf5.js +0 -23
  945. package/dist/assets/stex.01be88ae.js +0 -1
  946. package/dist/assets/stex.512ed406.js +0 -1
  947. package/dist/assets/stylus.bd984b7f.js +0 -1
  948. package/dist/assets/support.c2f208d3.js +0 -1
  949. package/dist/assets/sv-SE.b95b4c7c.js +0 -1
  950. package/dist/assets/sv.f79c898d.js +0 -1
  951. package/dist/assets/swift.cdec1908.js +0 -1
  952. package/dist/assets/ta-in.370b9ab8.js +0 -1
  953. package/dist/assets/tcl.e7ba7b0f.js +0 -1
  954. package/dist/assets/teams.8ce9f77a.js +0 -1
  955. package/dist/assets/template_shell.742b63cc.js +0 -1
  956. package/dist/assets/textile.950efcf3.js +0 -1
  957. package/dist/assets/th-TH.0d8bf48f.js +0 -2
  958. package/dist/assets/th.679a9063.js +0 -1
  959. package/dist/assets/themes.e850ef55.js +0 -5
  960. package/dist/assets/tiddlywiki.8aef433e.js +0 -1
  961. package/dist/assets/tiki.6a41c1d9.js +0 -1
  962. package/dist/assets/toml.c45bcaa3.js +0 -1
  963. package/dist/assets/tornado.e8ea11cc.js +0 -1
  964. package/dist/assets/tr-TR.328a2546.js +0 -1
  965. package/dist/assets/tr.e7f6cd2d.js +0 -1
  966. package/dist/assets/translation-strings.69ea6237.js +0 -1
  967. package/dist/assets/translations.8ea252f7.js +0 -1
  968. package/dist/assets/translations.b81402fc.js +0 -1
  969. package/dist/assets/triggers.0e93619a.js +0 -1
  970. package/dist/assets/troff.077cf877.js +0 -1
  971. package/dist/assets/ttcn-cfg.ba525a5b.js +0 -1
  972. package/dist/assets/ttcn.bfed144b.js +0 -1
  973. package/dist/assets/turtle.dfe79159.js +0 -1
  974. package/dist/assets/twig.59af71a7.js +0 -1
  975. package/dist/assets/ubuntu.e38c0d26.js +0 -11
  976. package/dist/assets/ug.6706371a.js +0 -1
  977. package/dist/assets/uk-UA.fe247137.js +0 -1
  978. package/dist/assets/uk.26a8f86d.js +0 -1
  979. package/dist/assets/upgrades-migrations.c4b67d31.js +0 -1
  980. package/dist/assets/use-sync.bc96de7c.js +0 -28
  981. package/dist/assets/user-directory.07c03cbb.js +0 -1
  982. package/dist/assets/users-roles-permissions.3b59416f.js +0 -1
  983. package/dist/assets/users.7dcf5230.js +0 -1
  984. package/dist/assets/users.94a90ec8.js +0 -252
  985. package/dist/assets/utilities.7fff849b.js +0 -74
  986. package/dist/assets/uz.b4b5756e.js +0 -1
  987. package/dist/assets/validation.93e6293c.js +0 -1
  988. package/dist/assets/vb.c07d554a.js +0 -1
  989. package/dist/assets/vbscript.1bea056c.js +0 -1
  990. package/dist/assets/velocity.247c9e8f.js +0 -1
  991. package/dist/assets/verilog.b5160b25.js +0 -1
  992. package/dist/assets/vhdl.98f0ac6b.js +0 -1
  993. package/dist/assets/vi-VN.7f9cab4b.js +0 -1
  994. package/dist/assets/vi.45dd42fd.js +0 -1
  995. package/dist/assets/vue-i18n.fbc77449.entry.js +0 -23
  996. package/dist/assets/vue-router.3a828e63.entry.js +0 -5
  997. package/dist/assets/vue.486f3e62.entry.js +0 -1
  998. package/dist/assets/vue.6528798b.js +0 -1
  999. package/dist/assets/vue.runtime.esm-bundler.f6138180.js +0 -1
  1000. package/dist/assets/wast.27cf1b17.js +0 -1
  1001. package/dist/assets/webhooks.0593a860.js +0 -147
  1002. package/dist/assets/webhooks.7f06dfe2.js +0 -1
  1003. package/dist/assets/webidl.2ae1cb8b.js +0 -1
  1004. package/dist/assets/xml.79d1f0ff.js +0 -1
  1005. package/dist/assets/xquery.0d155bd9.js +0 -1
  1006. package/dist/assets/yacas.77cab975.js +0 -1
  1007. package/dist/assets/yaml-frontmatter.71c15cf9.js +0 -1
  1008. package/dist/assets/yaml.90597802.js +0 -1
  1009. package/dist/assets/z80.e0974862.js +0 -1
  1010. package/dist/assets/zh-CN.0affdc0a.js +0 -1
  1011. package/dist/assets/zh-TW.e0b114ab.js +0 -1
  1012. package/dist/assets/zh-cn.8541dabe.js +0 -1
  1013. package/dist/assets/zh-tw.0b1e37f8.js +0 -1
@@ -1,3 +0,0 @@
1
- import{a as i,o as d,e as u,y as t,u as e,q as l,z as n}from"./runtime-core.esm-bundler.22ec0346.js";const h={class:"markdown-body"},c=e("blockquote",null,[e("p",null,[l("Insights is a Module in Directus that allows rapid, no-code build-out of analytics dashboards. Regardless of your use-case "),e("em",null,"(be it business intelligence, user progress tracking, web traffic conversions, or whatever!)"),l(" you will be able to setup key data metrics in just a few clicks.")])],-1),p=e("video",{autoplay:"",playsinline:"",muted:"",loop:"",controls:""},[e("source",{src:"https://cdn.directus.io/docs/v9/app-guide/insights/insights-20220216A/insights-dashboards-20220216A.mp4",type:"video/mp4"})],-1),g=e("h2",{id:"how-it-works",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#how-it-works"},"#"),l(" How it Works")],-1),m=e("video",{autoplay:"",playsinline:"",muted:"",loop:"",controls:""},[e("source",{src:"https://cdn.directus.io/docs/v9/app-guide/insights/insights-20220216A/insights-how-it-works-20220216A_1.mp4",type:"video/mp4"})],-1),b=e("p",null,"First, create a Dashboard, then fill the Dashboard with Panels.",-1),y=e("ol",null,[e("li",null,[l("Click the \u201CCreate Dashboard\u201D action button "),e("span",{mi:"",btn:""},"add"),l(" in the page header.")]),e("li",null,"Fill in the dashboard name, icon and note."),e("li",null,"Click \u201CSave\u201D."),e("li",null,"Click the edit icon in the page header."),e("li",null,[l("Hit the \u201CCreate Panel\u201D "),e("span",{mi:"",btn:""},"add"),l(" in the page header.")]),e("li",null,[l("Select a Panel type. "),e("a",{href:"#panels-overview"},"Learn More about panel types"),l(".")]),e("li",null,"Adjust the Panel Options to customize the analytics metric."),e("li",null,[l("Click "),e("span",{mi:"",btn:""},"check"),l(" in the drawer header to create the panel.")]),e("li",null,[l("Click "),e("span",{mi:"",btn:""},"check"),l(" in the page header to confirm all edits.")])],-1),f=e("h2",{id:"dashboards-overview",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#dashboards-overview"},"#"),l(" Dashboards Overview")],-1),_=e("p",null,[e("img",{src:"https://cdn.directus.io/docs/v9/app-guide/insights/insights-20220216A/dashboards-overview-20220216A.webp",alt:"Dashboard Grid Area"})],-1),v={class:"tip hint"},w=e("div",{class:"hint-title"},"Auto Refresh",-1),S=e("h2",{id:"create%2C-edit%2C-and-delete-dashboards",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#create%2C-edit%2C-and-delete-dashboards"},"#"),l(" Create, Edit, and Delete Dashboards")],-1),x=e("p",null,[e("img",{src:"https://cdn.directus.io/docs/v9/app-guide/insights/insights-20220216A/create-edit-delete-dashboards-20220216A.webp",alt:"How to Add, Edit and Delete Dashboards in Directus Insights"})],-1),D=e("ol",null,[e("li",null,[l("Click the "),e("span",{mi:"",btn:""},"add"),l(" icon in the page header to create a new Dashboard.")]),e("li",null,"Click the item option to edit or delete a Dashboard.")],-1),A=e("h2",{id:"panels-overview",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#panels-overview"},"#"),l(" Panels Overview")],-1),I=e("p",null,[e("img",{src:"https://cdn.directus.io/docs/v9/app-guide/insights/insights-20220216A/panels-overview-20220216A.webp",alt:"Directus Dashboard Panels"})],-1),k=e("p",null,"Panels are the building-blocks we add onto Insights dashboards to create, save and display data analytics. There are five types of Panels, and each one provides some unique analytics tool.",-1),F=e("ol",null,[e("li",null,[e("strong",null,"Label"),l(" \u2013 Displays simple header text to describe other groups of panels. Doesn\u2019t actually provide data analysis.")]),e("li",null,[e("strong",null,"List"),l(" \u2013 Sortable, filterable list of items within a collection.")]),e("li",null,[e("strong",null,"Metric"),l(" \u2013 Sortable, filterable single-number metrics like sum, average, minimum and maximum, or first and last.")]),e("li",null,[e("strong",null,"Time Series"),l(" \u2013 Graph to display how metrics change over time. Provides same sorting, filtering and aggregation features seen in the list and metric panels.")]),e("li",null,[e("strong",null,"Global Variables"),l(" \u2014 Sets a variable which is globally accessible across other panels.")])],-1),C=e("h2",{id:"panel-header-options",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#panel-header-options"},"#"),l(" Panel Header Options")],-1),P=e("p",null,[e("img",{src:"https://cdn.directus.io/docs/v9/app-guide/insights/insights-20220216A/panel-header-options-20220216A.webp",alt:"Panel Header Options"})],-1),T=e("p",null,"All 4 panel types let you set custom text to provide quick and clear context about what a Panel represents. Panel Header options are exactly the same for all four Panel types. Headers are also totally optional and can be hidden.",-1),V=e("ul",null,[e("li",null,[e("strong",null,"Visible"),l(" \u2013 Determines if the header is visible or not.")]),e("li",null,[e("strong",null,"Name"),l(" \u2013 Sets a name in the header area.")]),e("li",null,[e("strong",null,"Icon"),l(" \u2013 Sets a small icon by the name.")]),e("li",null,[e("strong",null,"Color"),l(" \u2013 Sets a color for the icon.")]),e("li",null,[e("strong",null,"Note"),l(" \u2013 Sets a short description of the icon.")])],-1),L=e("h2",{id:"labels",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#labels"},"#"),l(" Labels")],-1),M=e("p",null,[e("img",{src:"https://cdn.directus.io/docs/v9/app-guide/insights/insights-20220216A/label-panel-options-20220216A.webp",alt:"Label Panel Options"})],-1),G=e("p",null,[l("As the name implies, this panel simply allows you to "),e("em",null,"label"),l(" a group of other panels. Labels do not provide analytics. Labels simply help visually group the other panels ("),e("em",null,"which do provide analytics"),l(") and give context to your dashboard.")],-1),O=e("ul",null,[e("li",null,[e("strong",null,"Label"),l(" \u2013 Sets the label text.")]),e("li",null,[e("strong",null,"Color"),l(" \u2013 Sets the label text color.")])],-1),q=e("h2",{id:"lists",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#lists"},"#"),l(" Lists")],-1),H=e("p",null,[e("img",{src:"https://cdn.directus.io/docs/v9/app-guide/insights/insights-20220216A/list-panel-options-20220216A.webp",alt:"List Panel Options"})],-1),R=e("p",null,[l("List panels display some number of Items from a Collection, "),e("em",null,"as a list!"),l(" These Items displayed can be filtered by other criteria as well. So for example, you could show your top 5 selling products, 3 worst performing sales regions, 10 students with the highest GPA "),e("em",null,"that are also"),l(" in intramural sports, or create any other kind of ranked and/or filtered list that could be generated from your dataset.")],-1),Y=e("ul",null,[e("li",null,[e("strong",null,"Collection"),l(" \u2013 Selects the Collection to rank.")]),e("li",null,[e("strong",null,"Limit"),l(" \u2013 Limits the number of Items that will appear in the Dashboard.")]),e("li",null,[e("strong",null,"Sort Field"),l(" \u2013 Sets the Collection Field you wish to order results by.")]),e("li",null,[e("strong",null,"Sort Direction"),l(" \u2013 Sets Items to display in ascending or descending order.")]),e("li",null,[e("strong",null,"Display Template"),l(" \u2013 Defines how List Items will be represented. Allows use of Field Item values as well as custom text.")]),e("li",null,[e("strong",null,"Filter"),l(" \u2013 Sets filters to only consider and rank Items that meet some criteria.")])],-1),N=e("h2",{id:"metrics",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#metrics"},"#"),l(" Metrics")],-1),W=e("p",null,[e("img",{src:"https://cdn.directus.io/docs/v9/app-guide/insights/insights-20220216A/metric-panel-options-20220216A.webp",alt:"Metrics Panel Options"})],-1),z=e("p",null,"Metrics Panels allow you to aggregate all Items in a Field down to a single value.",-1),E=e("ul",null,[e("li",null,[e("strong",null,"Collection"),l(" \u2013 Selects the Collection.")]),e("li",null,[e("strong",null,"Field"),l(" \u2013 Selects the Field to run aggregate function on.")]),e("li",null,[e("strong",null,"Aggregate Function"),l(" \u2013 Selects the type of aggregate to perform.")]),e("li",null,[e("strong",null,"Sort Field"),l(" \u2013 Sets the collection field you wish to order results by.")]),e("li",null,[e("strong",null,"Filter"),l(" \u2013 Sets filters to only run metrics on Items that meet some criteria.")])],-1),B=e("h3",{id:"more-on-aggregate-functions",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#more-on-aggregate-functions"},"#"),l(" More on Aggregate Functions")],-1),K=e("p",null,"Generally speaking, aggregate functions take a list of values and returns one single value.",-1),U=e("ul",null,[e("li",null,[e("strong",null,"Count"),l(" \u2013 Counts the number of Items in a Field.")]),e("li",null,[e("strong",null,"Count (Distinct)"),l(" \u2013 Counts the number of "),e("em",null,"unique"),l(" Items in a field.")]),e("li",null,[e("strong",null,"Average"),l(" \u2013 Averages values of all Items in a Field.")]),e("li",null,[e("strong",null,"Average (Distinct)"),l(" \u2013 Averages values of all "),e("em",null,"unique"),l(" Items in a Field.")]),e("li",null,[e("strong",null,"Sum"),l(" \u2013 Sums the values of all Items in a Field.")]),e("li",null,[e("strong",null,"Sum (Distinct)"),l(" \u2013 Sums the values of all "),e("em",null,"unique"),l(" Items in a Field.")]),e("li",null,[e("strong",null,"Minimum"),l(" \u2013 Selects the lowest valued Item in a Field.")]),e("li",null,[e("strong",null,"Maximum"),l(" \u2013 Selects the highest valued Item in a Field.")]),e("li",null,[e("strong",null,"First"),l(" \u2013 Selects the first Item out of all Items in a Field.")]),e("li",null,[e("strong",null,"Last"),l(" \u2013 Selects the last Item out of all Items in a Field.")])],-1),j=e("div",{class:"tip hint"},[e("div",{class:"hint-title"},"First, Last, Minimum and Maximum"),e("p",null,"First, Last, Minimum and Maximum are not aggregates in the purely mathematical sense of the word. However, they are placed in this panel option because they return one single Item.")],-1),J=e("div",{class:"tip hint"},[e("div",{class:"hint-title"},"Why are some Fields grayed out?"),e("p",null,[l("Certain Fields cannot be used with certain aggregate functions. For example, you cannot use the average function on Fields that store text, because text cannot be averaged. When there is a conflict between panel options, Fields will be grayed out and unselectable in the "),e("code",null,"field dropdown list"),l(".")])],-1),X=e("h3",{id:"style-and-format-options",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#style-and-format-options"},"#"),l(" Style and Format Options")],-1),Q=e("ul",null,[e("li",null,[e("strong",null,"Abbreviate Value"),l(" \u2013 Abbreviates large numbers with a letter "),e("em",null,"(e.g. 2,000 = 2K)"),l(".")]),e("li",null,[e("strong",null,"Decimals"),l(" \u2013 Changes the number of decimals displayed.")]),e("li",null,[e("strong",null,"Prefix"),l(" \u2013 Adds text before the aggregate metric.")]),e("li",null,[e("strong",null,"Suffix"),l(" \u2013 Adds text after the aggregate metric.")]),e("li",null,[e("strong",null,"Conditional Styles"),l(" \u2013 Changes color of number displayed if it is "),e("code",null,">"),l(", "),e("code",null,">="),l(", "),e("code",null,"<"),l(", "),e("code",null,"<="),l(", "),e("code",null,"=="),l(", or "),e("code",null,"!="),l(" to some defined value.")])],-1),Z=e("h2",{id:"time-series",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#time-series"},"#"),l(" Time Series")],-1),$=e("p",null,[e("img",{src:"https://cdn.directus.io/docs/v9/app-guide/insights/insights-20220216A/time-series-panel-options-20220216A.webp",alt:"Time Series Panel Options"})],-1),ee=e("p",null,"The Time Series Panel allows you to build graphs and see how data changes over time.",-1),le=e("ul",null,[e("li",null,[e("strong",null,"Collection"),l(" \u2013 Selects the Collection you want to analyze.")]),e("li",null,[e("strong",null,"Color"),l(" \u2013 Sets color of your graph curve.")]),e("li",null,[e("strong",null,"Group Aggregation"),l(" \u2013 Selects the type of aggregation to perform. "),e("a",{href:"#more-on-aggregate-functions"},"Learn more"),l(".")]),e("li",null,[e("strong",null,"Group Precision"),l(" \u2013 Sets the time interval to aggregate by "),e("em",null,"(days, weeks, months, etc.)"),l(".")]),e("li",null,[e("strong",null,"Date Field"),l(" \u2013 Selects the datetime Field used along the x-axis.")]),e("li",null,[e("strong",null,"Date Range"),l(" \u2013 Sets the time range from which data should be displayed, can be customized.")]),e("li",null,[e("strong",null,"Value Field"),l(" \u2013 Sets the Field you wish to aggregate.")]),e("li",null,[e("strong",null,"Value Decimals"),l(" \u2013 Changes the number of decimals displayed on the y-axis.")]),e("li",null,[e("strong",null,"Min Value"),l(" \u2013 Sets minimum value displayed on y-axis.")]),e("li",null,[e("strong",null,"Max Value"),l(" \u2013 Sets maximum value displayed on y-axis.")]),e("li",null,[e("strong",null,"Curve Type"),l(" \u2013 Sets curve to be shown as smooth, straight or stepline.")]),e("li",null,[e("strong",null,"Fill Type"),l(" \u2013 Sets fill type under curve to gradient, solid, or none.")]),e("li",null,[e("strong",null,"Filter"),l(" \u2013 Allows filtering of Items considered for analysis based on logical conditions.")]),e("li",null,[e("strong",null,"Show X-axis"),l(" \u2013 Toggles display of time along X-axis.")]),e("li",null,[e("strong",null,"Show Y-axis"),l(" \u2013 Toggles display of numeric values along Y-axis.")])],-1),te=e("div",{class:"warning hint"},[e("div",{class:"hint-title"},"Time-oriented metrics only"),e("p",null,"In order to use this Panel, your Collection will need a datetime Field.")],-1),se=e("div",{class:"tip hint"},[e("div",{class:"hint-title"},"Custom Date Range"),e("p",null,[l("Note that "),e("code",null,"Past"),l(" is not prefixed to a custom range as it is on the default ranges. When selecting "),e("strong",null,"\u201COther\u201D"),l(", simply type in "),e("code",null,"3 years"),l(", "),e("code",null,"1 month"),l(", "),e("code",null,"2 weeks"),l(", "),e("code",null,"5 days"),l(", etc.")])],-1),ae=e("h2",{id:"global-variable",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#global-variable"},"#"),l(" Global Variable")],-1),ie=e("p",null,[e("img",{src:"https://cdn.directus.io/docs/v9/app-guide/insights/insights-220624A/global-variable-220624A.webp",alt:"Global Variables"})],-1),ne=e("ul",null,[e("li",null,[e("strong",null,"Variable Key"),l(" \u2014 Sets your variable. Use this key to access the variable in other Insights panels.")]),e("li",null,[e("strong",null,"Type"),l(" \u2014 Sets the data type of your variable.")]),e("li",null,[e("strong",null,"Default Value"),l(" \u2014 Sets a default value for the global variable.")]),e("li",null,[e("strong",null,"Interface"),l(" \u2014 Selects the Interface to be used.")]),e("li",null,[e("strong",null,"Options"),l(" \u2014 Sets the Interface Options.")])],-1),oe=e("p",null,"This panel allows you to create a variable which is globally accessible across other panels. You can use this to do things like create a string or number to prefix other Insights Panel titles or pass it as a value into a Filter to query results.",-1),re=e("p",null,[l("To create and assign a Global Variable, follow the steps from "),e("a",{href:"#how-it-works"},"How it Works"),l(", selecting the Global Variable panel. Wrap the variable key in double-moustache syntax to access and assign it throughout other Insights Panels:")],-1),de=e("pre",null,[e("code",null,`{{ your_variable_key }}
2
- `)],-1),ue=e("p",null,"You will notice that the Global Variable Panel is an interface in the Dashboard, allowing you to modify the value of this variable. If you change its value, all panels referencing the variable will update automatically.",-1),he=e("div",{class:"warning hint"},[e("div",{class:"hint-title"},"Must be Valid Data Type"),e("p",null,"Your variable\u2019s data type will need to be a valid match to wherever you are using it. For example, do not apply a string or JSON variable in a place that requires Datetime data.")],-1),ce=e("h2",{id:"global-relational-variable",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#global-relational-variable"},"#"),l(" Global Relational Variable")],-1),pe=e("ul",null,[e("li",null,[e("strong",null,"Variable Key"),l(" \u2014 Sets your variable. Use this key to access the variable in other Insights panels.")]),e("li",null,[e("strong",null,"Collection"),l(" \u2014 The collection to get the item IDs from.")]),e("li",null,[e("strong",null,"Multiple"),l(" \u2014 Allow selection of multiple items when enabled.")]),e("li",null,[e("strong",null,"Limit"),l(" \u2014 Limits the number of items that can be selected.")]),e("li",null,[e("strong",null,"Display Template"),l(" \u2014 Defines how the items will be represented. Allows use of Field Item values as well as custom text.")]),e("li",null,[e("strong",null,"Filter"),l(" \u2014 Sets filters to allow selection of items that meet some criteria.")])],-1),ge=e("p",null,"This panel allows you to create a variable which is globally accessible across other panels. You can use this to do things like select single or multiple items and pass their IDs as a value into a Filter to query results.",-1),me=e("p",null,[l("To create and assign a Global Relational Variable, follow the steps from "),e("a",{href:"#how-it-works"},"How it Works"),l(", selecting the Global Relational Variable panel. Wrap the variable key in double-moustache syntax to access and assign it throughout other Insights Panels:")],-1),be=e("pre",null,[e("code",null,`{{ your_variable_key }}
3
- `)],-1),ye=e("p",null,"You will notice that the Global Relational Variable Panel is an interface in the Dashboard, allowing you to modify the value of this variable. If you change its value, all panels referencing the variable will update automatically.",-1),fe=e("div",{class:"warning hint"},[e("div",{class:"hint-title"},"Must be Valid Data Type"),e("p",null,"Your variable\u2019s data type will need to be a valid match to wherever you are using it. For example, do not apply a string or JSON variable in a place that requires Datetime data.")],-1),xe="Insights",De=!1,Ae="Insights is a Module in Directus that allows rapid, no-code build-out of analytics dashboards.",Ie="9 min read",ke={__name:"insights",setup(_e,{expose:o}){const s={title:"Insights",modularExtension:!1,description:"Insights is a Module in Directus that allows rapid, no-code build-out of analytics dashboards.",readTime:"9 min read"};return o({frontmatter:s}),(ve,we)=>{const a=i("router-link"),r=i("docs-wrapper");return d(),u(r,{frontmatter:s},{default:t(()=>[e("div",h,[c,p,g,m,b,y,f,_,e("p",null,[l("Each Directus Dashboard provides a drag-and-drop canvas where you can create and arrange different Panels to easily build out customized analytics. The Dashboard area automatically expands as you add more and more Panels. In theory, a Dashboard area can expand infinitely large\u2026 but in practice, users will probably only want to build Dashboards as large as the screen they will be viewing on. You are able to create as many Dashboards as you need. Additionally, the Dashboard view, edit, and create permissions are "),n(a,{to:"/docs/configuration/users-roles-permissions"},{default:t(()=>[l("fully configurable")]),_:1}),l(" by User Role.")]),e("div",v,[w,e("p",null,[l("The Auto Refresh menu in the "),n(a,{to:"/docs/app/overview#_4-sidebar"},{default:t(()=>[l("Sidebar")]),_:1}),l(" lets you select an interval to refresh dashboard data.")])]),S,x,D,A,I,k,F,C,P,T,V,L,M,G,O,q,H,R,Y,N,W,z,E,B,K,U,j,J,X,Q,Z,$,ee,le,te,se,ae,ie,ne,oe,re,de,ue,he,ce,pe,ge,me,be,ye,fe])]),_:1})}}};export{ke as default,Ae as description,De as modularExtension,Ie as readTime,xe as title};
@@ -1 +0,0 @@
1
- import{a,o as d,e as c,y as o,u as e,z as n,q as t}from"./runtime-core.esm-bundler.22ec0346.js";const u={class:"markdown-body"},h=e("blockquote",null,[e("p",null,"Directus can be installed in many different ways and on several different stacks. You can choose between local, self-hosted on-premises, or our managed Cloud solution.")],-1),p=e("p",null,"While our CLI is the recommended method for self-hosting, you can use whichever of these self-hosted options best suits your needs. These methods offer a high level of customization and are ideal for intermediate developers.",-1),f={class:"tip hint"},m=e("div",{class:"hint-title"},"Development Environment",-1),_=e("h2",{id:"deployment-guides",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#deployment-guides"},"#"),t(" Deployment Guides")],-1),y=e("p",null,"The following guides will walk you through the self-hosted installation process for specific third-party platforms. These options are only recommended for developers familiar with these services and comfortable with more advanced setup. While Directus is always completely free, you will likely need to pay for these services.",-1),g=e("li",null,[e("a",{href:"https://docs.cleavr.io/guides/directus",target:"_blank",rel:"noopener noreferrer"},"Cleavr.io")],-1),b=e("h2",{id:"one-click-installs",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#one-click-installs"},"#"),t(" One-Click Installs")],-1),k=e("p",null,"If you would like to completely avoid the manual installation process, the following self-hosted one-click apps will handle the heavy-lifting for you. While Directus is always completely free, you will likely need to pay for these services.",-1),D=e("li",null,[e("a",{href:"https://marketplace.digitalocean.com/apps/directus?action=deploy&refcode=4c0b6062c16e",target:"_blank",rel:"noopener noreferrer"},"DigitalOcean")],-1),w=e("li",null,[e("a",{href:"https://heroku.com/deploy?template=https://github.com/directus-community/heroku-template",target:"_blank",rel:"noopener noreferrer"},"Heroku")],-1),v=e("li",null,[e("a",{href:"https://console.platform.sh/projects/create-project?template=https%3A%2F%2Fraw.githubusercontent.com%2Fplatformsh%2Ftemplate-builder%2Fmaster%2Ftemplates%2Fdirectus%2F.platform.template.yaml",target:"_blank",rel:"noopener noreferrer"},"Platform.sh")],-1),B=e("li",null,[e("a",{href:"https://deploy.zeet.co/?url=https://github.com/directus-community/heroku-template",target:"_blank",rel:"noopener noreferrer"},"Zeet")],-1),C=e("li",null,[e("a",{href:"https://app.koyeb.com/deploy?type=docker&name=directus&ports=8055;http;/&env%5BPORT%5D=8055&env%5BKEY%5D=A%20random%20string&env%5BSECRET%5D=A%20random%20string&env%5BPUBLIC_URL%5D=https://myURL.com/&env%5BDB_CLIENT%5D=DB%20client&env%5BDB_HOST%5D=DB%20host&env%5BDB_PORT%5D=DB%20Port&env%5BDB_DATABASE%5D=Database%20name&env%5BDB_USER%5D=DB%20user&env%5BDB_PASSWORD%5D=DB%20Password&image=directus/directus",target:"_blank",rel:"noopener noreferrer"},"Koyeb")],-1),I=e("li",null,[e("a",{href:"https://www.alwaysdata.com/en/marketplace/directus",target:"_blank",rel:"noopener noreferrer"},"alwaysdata")],-1),T=e("li",null,[e("a",{href:"https://elest.io/open-source/directus",target:"_blank",rel:"noopener noreferrer"},"Elestio")],-1),E=e("h2",{id:"directus-cloud",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#directus-cloud"},"#"),t(" Directus Cloud")],-1),S=e("p",null,"In addition to the self-hosted options above, you can also choose to create Directus projects using our official Managed Cloud Service. This is the easiest way to get up-and-running with Directus \u2014 even for non-technical users. Unique features include dedicated hardware, automatic updates, automatic backups, usage-based pricing, and more.",-1),A=e("ul",null,[e("li",null,[e("a",{href:"http://directus.cloud",target:"_blank",rel:"noopener noreferrer"},"Directus Cloud Dashboard")]),e("li",null,[e("a",{href:"https://directus.io/on-demand-cloud",target:"_blank",rel:"noopener noreferrer"},"Learn more about On-Demand Cloud")]),e("li",null,[e("a",{href:"https://directus.io/enterprise-cloud",target:"_blank",rel:"noopener noreferrer"},"Learn more about Enterprise Cloud")])],-1),O="Installation",R=!1,U="Directus can be installed in many different ways and on several different stacks. You can choose between local, self-hosted on-premises, or our managed Cloud solution.",W="2 min read",z={__name:"installation",setup(P,{expose:r}){const s={title:"Installation",modularExtension:!1,description:"Directus can be installed in many different ways and on several different stacks. You can choose between local, self-hosted on-premises, or our managed Cloud solution.",readTime:"2 min read"};return r({frontmatter:s}),(x,L)=>{const l=a("router-link"),i=a("docs-wrapper");return d(),c(i,{frontmatter:s},{default:o(()=>[e("div",u,[h,p,e("ul",null,[e("li",null,[n(l,{to:"/docs/self-hosted/installation/cli"},{default:o(()=>[t("Command Line Interface (CLI)")]),_:1})]),e("li",null,[n(l,{to:"/docs/self-hosted/installation/docker"},{default:o(()=>[t("Docker")]),_:1})]),e("li",null,[n(l,{to:"/docs/self-hosted/installation/manual"},{default:o(()=>[t("Manually")]),_:1})])]),e("div",f,[m,e("p",null,[t("To work on the Directus Core source code, please follow our "),n(l,{to:"/docs/contributing/introduction"},{default:o(()=>[t("Contributing Guide")]),_:1}),t(".")])]),_,y,e("ul",null,[e("li",null,[n(l,{to:"/docs/self-hosted/installation/ubuntu"},{default:o(()=>[t("Generic Ubuntu")]),_:1})]),e("li",null,[n(l,{to:"/docs/self-hosted/installation/iis"},{default:o(()=>[t("Internet Information Services (IIS)")]),_:1})]),e("li",null,[n(l,{to:"/docs/self-hosted/installation/aws"},{default:o(()=>[t("Amazon AWS")]),_:1})]),e("li",null,[n(l,{to:"/docs/self-hosted/installation/gcp"},{default:o(()=>[t("Google Cloud Platform")]),_:1})]),e("li",null,[n(l,{to:"/docs/self-hosted/installation/digitalocean-app-platform"},{default:o(()=>[t("DigitalOcean App Platform")]),_:1})]),e("li",null,[n(l,{to:"/docs/self-hosted/installation/plesk"},{default:o(()=>[t("Shared Hosting with Plesk")]),_:1})]),g]),b,k,e("ul",null,[e("li",null,[n(l,{to:"/docs/self-hosted/installation/cloudron"},{default:o(()=>[t("Cloudron")]),_:1})]),D,w,v,B,C,I,T]),E,S,A])]),_:1})}}};export{z as default,U as description,R as modularExtension,W as readTime,O as title};
@@ -1 +0,0 @@
1
- import{a as n,o as s,e as r,y as c,u as t}from"./runtime-core.esm-bundler.22ec0346.js";const i=t("div",{class:"markdown-body"},[t("p",null,"This pane includes any customization options that may be defined by the Interface.")],-1),f="Interface",m=!1,u={__name:"interface",setup(l,{expose:o}){const e={title:"Interface",modularExtension:!1};return o({frontmatter:e}),(p,d)=>{const a=n("docs-wrapper");return s(),r(a,{frontmatter:e},{default:c(()=>[i]),_:1})}}};export{u as default,m as modularExtension,f as title};
@@ -1,46 +0,0 @@
1
- import{a,o as r,e as u,y as n,u as e,q as t,z as o}from"./runtime-core.esm-bundler.22ec0346.js";const d={class:"markdown-body"},h=e("h2",{id:"extension-entrypoint",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#extension-entrypoint"},"#"),t(" Extension Entrypoint")],-1),p=e("p",null,[t("The entrypoint of your interface is the "),e("code",null,"index"),t(" file inside the "),e("code",null,"src/"),t(" folder of your extension package. It exports a configuration object with options to configure the behavior of your interface. When loading your interface, this object is imported by the Directus host.")],-1),f=e("p",null,"Example of an entrypoint:",-1),m=e("pre",null,[e("code",{class:"language-js"},[e("span",{class:"hljs-keyword"},"import"),t(),e("span",{class:"hljs-title class_"},"InterfaceComponent"),t(),e("span",{class:"hljs-keyword"},"from"),t(),e("span",{class:"hljs-string"},"'./interface.vue'"),t(`;
2
-
3
- `),e("span",{class:"hljs-keyword"},"export"),t(),e("span",{class:"hljs-keyword"},"default"),t(` {
4
- `),e("span",{class:"hljs-attr"},"id"),t(": "),e("span",{class:"hljs-string"},"'custom'"),t(`,
5
- `),e("span",{class:"hljs-attr"},"name"),t(": "),e("span",{class:"hljs-string"},"'Custom'"),t(`,
6
- `),e("span",{class:"hljs-attr"},"icon"),t(": "),e("span",{class:"hljs-string"},"'box'"),t(`,
7
- `),e("span",{class:"hljs-attr"},"description"),t(": "),e("span",{class:"hljs-string"},"'This is my custom interface!'"),t(`,
8
- `),e("span",{class:"hljs-attr"},"component"),t(": "),e("span",{class:"hljs-title class_"},"InterfaceComponent"),t(`,
9
- `),e("span",{class:"hljs-attr"},"options"),t(": "),e("span",{class:"hljs-literal"},"null"),t(`,
10
- `),e("span",{class:"hljs-attr"},"types"),t(": ["),e("span",{class:"hljs-string"},"'string'"),t(`],
11
- };
12
- `)])],-1),_=e("h4",{id:"available-options",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#available-options"},"#"),t(" Available Options")],-1),y=e("li",null,[e("code",null,"id"),t(" \u2014 The unique key for this interface. It is good practice to scope proprietary interfaces with an author prefix.")],-1),g=e("li",null,[e("code",null,"name"),t(" \u2014 The human-readable name for this interface.")],-1),b=e("code",null,"icon",-1),w=e("li",null,[e("code",null,"description"),t(" \u2014 A short description (<80 characters) of this interface shown in the App.")],-1),j=e("li",null,[e("code",null,"component"),t(" \u2014 A reference to your interface component.")],-1),v=e("li",null,[e("code",null,"options"),t(" \u2014 The options of your interface. Can be either an options object or a dedicated Vue component.")],-1),x=e("code",null,"types",-1),k=e("li",null,[e("code",null,"localTypes"),t(" \u2014 An array of local types. Accepts "),e("code",null,"standard"),t(", "),e("code",null,"file"),t(", "),e("code",null,"files"),t(", "),e("code",null,"m2o"),t(", "),e("code",null,"o2m"),t(", "),e("code",null,"m2m"),t(", "),e("code",null,"m2a"),t(", "),e("code",null,"presentation"),t(", "),e("code",null,"translations"),t(" and "),e("code",null,"group"),t(". Defaults to "),e("code",null,"standard"),t(".")],-1),A=e("li",null,[e("code",null,"group"),t(" \u2014 The group this interface is shown at when creating a field. Accepts "),e("code",null,"standard"),t(", "),e("code",null,"selection"),t(", "),e("code",null,"relational"),t(", "),e("code",null,"presentation"),t(", "),e("code",null,"group"),t(" or "),e("code",null,"other"),t(".")],-1),T=e("li",null,[e("code",null,"relational"),t(" \u2014 A boolean that indicates if this interface is a relational interface.")],-1),I=e("li",null,[e("code",null,"recommendedDisplays"),t(" \u2014 An array of display names which are recommended to be used with this interface.")],-1),C=e("h2",{id:"interface-component",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#interface-component"},"#"),t(" Interface Component")],-1),V=e("p",null,"The interface component is the part of your extension that will be rendered by the Directus App whenever your interface should be used to input some value into a field. This interface component has to be Vue component. The most straightforward way to write a Vue component is to use the Vue Single File Component syntax.",-1),D=e("p",null,"Example of an interface component using the Vue SFC syntax:",-1),S=e("pre",null,[e("code",{class:"language-vue"},`<template>
13
- <input :value="value" @input="handleChange($event.target.value)" />
14
- </template>
15
-
16
- <script>
17
- export default {
18
- props: {
19
- value: {
20
- type: String,
21
- default: null,
22
- },
23
- },
24
- emits: ['input'],
25
- setup(props, { emit }) {
26
- return { handleChange };
27
-
28
- function handleChange(value) {
29
- emit('input', value);
30
- }
31
- },
32
- };
33
- <\/script>
34
- `)],-1),E=e("p",null,[t("The current value of the field is provided to the component via the "),e("code",null,"value"),t(" prop. If the value was changed inside your component, it should be emitted to the Directus App by using the "),e("code",null,"input"),t(" emit.")],-1),P=e("h4",{id:"available-props",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#available-props"},"#"),t(" Available Props")],-1),O=e("ul",null,[e("li",null,[e("code",null,"value"),t(" \u2014 The value of the field.")]),e("li",null,[e("code",null,"width"),t(" \u2014 The layout width of the field. Either "),e("code",null,"half"),t(", "),e("code",null,"half-right"),t(", "),e("code",null,"full"),t(", or "),e("code",null,"fill"),t(".")]),e("li",null,[e("code",null,"type"),t(" \u2014 The type of the field.")]),e("li",null,[e("code",null,"collection"),t(" \u2014 The collection name of the field.")]),e("li",null,[e("code",null,"field"),t(" \u2014 The key of the field.")]),e("li",null,[e("code",null,"primaryKey"),t(" \u2014 The current item\u2019s primary key.")])],-1),q=e("h4",{id:"available-emits",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#available-emits"},"#"),t(" Available Emits")],-1),B=e("ul",null,[e("li",null,[e("code",null,"input"),t(" \u2014 Update the value of the field.")])],-1),N=e("p",null,"Other than this simple API to communicate with the Directus App, the interface component is a blank canvas, allowing you to create anything you need.",-1),F=e("div",{class:"warning hint"},[e("div",{class:"hint-title"},"Vue Version"),e("p",null,"The Directus App uses Vue 3. There might be 3rd party libraries that aren\u2019t yet compatible with Vue 3.")],-1),z=e("h2",{id:"accessing-internal-systems",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#accessing-internal-systems"},"#"),t(" Accessing Internal Systems")],-1),K=e("p",null,[t("To access internal systems like the API or the stores, you can use the "),e("code",null,"useApi()"),t(" and "),e("code",null,"useStores()"),t(" composables exported by the "),e("code",null,"@directus/extensions-sdk"),t(" package. They can be used inside a "),e("code",null,"setup()"),t(" function like this:")],-1),L=e("pre",null,[e("code",{class:"language-js"},[e("span",{class:"hljs-keyword"},"import"),t(" { useApi, useStores } "),e("span",{class:"hljs-keyword"},"from"),t(),e("span",{class:"hljs-string"},"'@directus/extensions-sdk'"),t(`;
35
-
36
- `),e("span",{class:"hljs-keyword"},"export"),t(),e("span",{class:"hljs-keyword"},"default"),t(` {
37
- `),e("span",{class:"hljs-title function_"},"setup"),t("("),e("span",{class:"hljs-params"}),t(`) {
38
- `),e("span",{class:"hljs-keyword"},"const"),t(" api = "),e("span",{class:"hljs-title function_"},"useApi"),t(`();
39
-
40
- `),e("span",{class:"hljs-keyword"},"const"),t(" { useCollectionsStore } = "),e("span",{class:"hljs-title function_"},"useStores"),t(`();
41
- `),e("span",{class:"hljs-keyword"},"const"),t(" collectionsStore = "),e("span",{class:"hljs-title function_"},"useCollectionsStore"),t(`();
42
-
43
- `),e("span",{class:"hljs-comment"},"// ..."),t(`
44
- },
45
- };
46
- `)])],-1),U=e("div",{class:"tip hint"},[e("div",{class:"hint-title"},"Vue Options API"),e("p",null,[t("If you prefer to use the Vue Options API, you can inject the "),e("code",null,"api"),t(" and "),e("code",null,"stores"),t(" properties directly.")])],-1),J="Custom Interfaces",M=!0,Q="A guide on how to build custom Interfaces in Directus.",R="4 min read",X={__name:"interfaces",setup(W,{expose:i}){const l={title:"Custom Interfaces",modularExtension:!0,description:"A guide on how to build custom Interfaces in Directus.",readTime:"4 min read"};return i({frontmatter:l}),($,G)=>{const s=a("router-link"),c=a("docs-wrapper");return r(),u(c,{frontmatter:l},{default:n(()=>[e("div",d,[e("blockquote",null,[e("p",null,[t("Custom Interfaces allow you to create new ways of viewing or interacting with field data on the Item Detail page. "),o(s,{to:"/docs/getting-started/glossary#interfaces"},{default:n(()=>[t("Learn more about Interfaces")]),_:1}),t(".")])]),h,p,f,m,_,e("ul",null,[y,g,e("li",null,[b,t(" \u2014 An icon name from the "),o(s,{to:"/docs/getting-started/glossary#material-icons"},{default:n(()=>[t("material icon set")]),_:1}),t(", or the extended list of Directus custom icons.")]),w,j,v,e("li",null,[x,t(" \u2014 An array of supported "),o(s,{to:"/docs/getting-started/glossary#types"},{default:n(()=>[t("types")]),_:1}),t(".")]),k,A,T,I]),C,V,D,S,E,P,O,q,B,N,F,z,K,L,U])]),_:1})}}};export{X as default,Q as description,M as modularExtension,R as readTime,J as title};
@@ -1 +0,0 @@
1
- import{a as r,o as c,e as u,y as s,u as e,q as t,z as l}from"./runtime-core.esm-bundler.22ec0346.js";const d={class:"markdown-body"},h=e("p",null,[t("Heya! Welcome to Directus, and thank you for taking the time to contribute back to Open Source Software! \u2764\uFE0F We want everybody to be able to contribute to Directus, no matter your background or expertise. In order to facilitate that, we\u2019ve put together a couple tips and tricks below. Our team truly appreciates every single contributor, community member, GitHub star, pull-request, bug report, and feature request. Keeping Directus completely free and open-source is our way of saying: "),e("strong",null,"Thank you!")],-1),p=e("blockquote",null,[e("p",null,"We\u2019re here to help!"),e("p",null,[t("If you have "),e("em",null,"any"),t(" questions along your contributor journey, please feel free to come chat with us on "),e("a",{href:"https://directus.chat",target:"_blank",rel:"noopener noreferrer"},"our Discord server"),t(".")])],-1),f=e("h2",{id:"code-of-conduct",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#code-of-conduct"},"#"),t(" Code of Conduct")],-1),m=e("p",null,[e("strong",null,[t("The Directus "),e("a",{href:"https://github.com/directus/directus/blob/main/code_of_conduct.md",target:"_blank",rel:"noopener noreferrer"},"Code of Conduct"),t(" is one of the ways we put our values into practice. We expect all of our staff, contractors and contributors to know and follow this code.")])],-1),g=e("p",null,[e("strong",null,"Our contributors and maintainers work extremely hard to build Directus as premium open-source software. Please be respectful of those efforts throughout our ecosystem. Trolling, harassing, insulting, or other unacceptable behavior by participants will not be tolerated.")],-1),b=e("p",null,"In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.",-1),_=e("p",null,"Examples of behavior that contributes to creating a positive environment include:",-1),y=e("ul",null,[e("li",null,"Using welcoming and inclusive language"),e("li",null,"Being respectful of differing viewpoints and experiences"),e("li",null,"Gracefully accepting constructive criticism"),e("li",null,"Focusing on what is best for the community"),e("li",null,"Showing empathy towards other community members")],-1),w=e("p",null,[e("strong",null,[t("Before continuing, please take a moment to read our full "),e("a",{href:"https://github.com/directus/directus/blob/main/code_of_conduct.md",target:"_blank",rel:"noopener noreferrer"},"Code of Conduct"),t(".")])],-1),v=e("h2",{id:"ways-to-contribute",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#ways-to-contribute"},"#"),t(" Ways to Contribute")],-1),k=e("h3",{id:"reporting-bugs",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#reporting-bugs"},"#"),t(" Reporting Bugs")],-1),x=e("p",null,[t("If you happen to run into a bug, please post an Issue on our main GitHub Issue board: "),e("a",{href:"https://github.com/directus/directus/issues",target:"_blank",rel:"noopener noreferrer"},"https://github.com/directus/directus/issues")],-1),D=e("p",null,"Please be as explicit and detailed as you can in the bug report. The more information available, the easier it is for other contributors to help you find the solution or fix. Consider adding a schema snapshot file, or a database dump.",-1),q=e("h3",{id:"leaving-feedback",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#leaving-feedback"},"#"),t(" Leaving Feedback")],-1),I=e("p",null,[t("If you have a great idea for an improvement of the platform, or any other feedback, please make sure to open a new Discussion on our GitHub Discussions board: "),e("a",{href:"https://github.com/directus/directus/discussions",target:"_blank",rel:"noopener noreferrer"},"https://github.com/directus/directus/discussions")],-1),T=e("h3",{id:"document-the-project",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#document-the-project"},"#"),t(" Document the Project")],-1),C=e("p",null,[t("The "),e("a",{href:"https://github.com/directus/docs",target:"_blank",rel:"noopener noreferrer"},"Directus Docs"),t(" are living documents that can always be improved on. Notice any parts of the docs in dire need of some tender love and care? Feel free to open a Pull Request!")],-1),B=e("h3",{id:"helping-others",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#helping-others"},"#"),t(" Helping Others")],-1),W=e("p",null,[t("The Directus community is growing quickly, which also means there\u2019s more and more people that have questions. Helping out your fellow developers by answering questions on "),e("a",{href:"https://directus.chat",target:"_blank",rel:"noopener noreferrer"},"Discord"),t(" or "),e("a",{href:"https://github.com/directus/directus/discussions/categories/q-a",target:"_blank",rel:"noopener noreferrer"},"GitHub Discussions"),t(" is a great way to help the project.")],-1),F=e("h3",{id:"pull-requests",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#pull-requests"},"#"),t(" Pull Requests")],-1),H=e("h4",{id:"bug-fixes",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#bug-fixes"},"#"),t(" Bug Fixes")],-1),P=e("p",null,"We treat Issues on the main repo as actionable items we want to get done. This also means that we welcome PRs for any Issue that has been labeled either \u201CBug\u201D, \u201CImprovement\u201D, or \u201CNew Feature\u201D. Labeled issues are bugs or new features that have been triaged, accepted, and are ready to be implemented.",-1),N=e("h4",{id:"implementing-features",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#implementing-features"},"#"),t(" Implementing Features")],-1),R=e("p",null,"With the continuous growth of Directus, more and more people are relying on Directus for (critical) data workloads in various use cases. This means we need to be careful with any changes that might affect the stability, security, performance, or scalability of Directus. For this reason, it\u2019s important that any new feature is properly thought through and discussed before being implemented.",-1),j=e("p",null,"Before you start writing code to implement your new feature idea, please read through and understand our triaging process for new features before diving in. While we encourage and appreciate every code contribution, please understand that we can\u2019t merge every suggested code change.",-1),G=e("h5",{id:"triaging-process",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#triaging-process"},"#"),t(" Triaging Process")],-1),O=e("p",null,"Feature Request Discussions that are deemed ready to be implemented with the discussed implementation details are marked \u201CAccepted\u201D and converted into an Issue, at which point the feature is ready to be implemented.",-1),S=e("p",null,[t("New feature ideas reported directly to issues might be converted into a Discussion for further triaging at "),e("a",{href:"https://github.com/orgs/directus/people",target:"_blank",rel:"noopener noreferrer"},"the core team"),t("\u2019s discretion first. This is often due to a lack of detail, or lack of proven interest.")],-1),A=e("p",null,[t("Each Pull Request that comes in is required to resolve "),e("a",{href:"https://github.com/directus/directus/issues",target:"_blank",rel:"noopener noreferrer"},"an open Issue"),t(" that is labeled \u201CBug\u201D, \u201CImprovement\u201D, or \u201CNew Feature\u201D. This ensures that any code change made implements a known actionable item, be it a feature or otherwise.")],-1),E=e("h3",{id:"reporting-security-vulnerabilities",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#reporting-security-vulnerabilities"},"#"),t(" Reporting Security Vulnerabilities")],-1),V=e("a",{href:"https://github.com/directus/directus/security/advisories",target:"_blank",rel:"noopener noreferrer"},"GitHub Security Advisory",-1),z=e("p",null,"We value the members of the independent security research community who find security vulnerabilities and work with our team so that proper fixes can be issued to users. Our policy is to credit all researchers in the fix\u2019s release notes. In order to receive credit, security researchers must follow responsible disclosure practices, including:",-1),L=e("ul",null,[e("li",null,"They do not publish the vulnerability prior to the Directus team releasing a fix for it"),e("li",null,"They do not divulge exact details of the issue, e.g., through exploits or proof-of-concepts")],-1),Q="Contributing",X=!1,Y="An introduction to the process, rules and guidelines that for all code contributions to Directus.",Z="6 min read",$={__name:"introduction",setup(K,{expose:i}){const o={title:"Contributing",modularExtension:!1,description:"An introduction to the process, rules and guidelines that for all code contributions to Directus.",readTime:"6 min read"};return i({frontmatter:o}),(U,J)=>{const n=r("router-link"),a=r("docs-wrapper");return c(),u(a,{frontmatter:o},{default:s(()=>[e("div",d,[h,p,f,m,g,b,_,y,w,v,k,x,D,q,I,T,C,B,W,F,H,P,N,R,j,G,O,S,A,E,e("p",null,[t("If you believe you have discovered a security issue within a Directus product or service, please reach out to us directly over email: "),l(n,{to:"/docsmailto:security@directus.io"},{default:s(()=>[t("security@directus.io")]),_:1}),t(". We will then open a "),V,t(" for tracking the fix.")]),z,L])]),_:1})}}};export{$ as default,Y as description,X as modularExtension,Z as readTime,Q as title};
@@ -1,90 +0,0 @@
1
- import{a as o,o as r,e as u,y as n,u as t,q as s,z as a}from"./runtime-core.esm-bundler.22ec0346.js";const h={class:"markdown-body"},d=t("blockquote",null,[t("p",null,"Directus offers both a RESTful and GraphQL API to manage the data in the database. The API has predictable resource-oriented URLs, relies on standard HTTP status codes, and uses JSON for input and output.")],-1),p=t("h2",{id:"dynamic-api",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#dynamic-api"},"#"),s(" Dynamic API")],-1),f=t("h2",{id:"rest-vs.-graphql",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#rest-vs.-graphql"},"#"),s(" REST vs. GraphQL")],-1),m=t("p",null,[t("strong",null,"There is no difference in the functionality available between the REST and GraphQL endpoints."),s(" The functionality available in both is mapped to the same set of core services, meaning that you don\u2019t lose any performance or capabilities by choosing one or the other.")],-1),j=t("p",null,"Which one you choose is ultimately up to you.",-1),_=t("h2",{id:"authentication",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#authentication"},"#"),s(" Authentication")],-1),y=t("p",null,"Useful references:",-1),g=t("h2",{id:"relational-data",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#relational-data"},"#"),s(" Relational Data")],-1),b=t("code",null,"fields",-1),w=t("h3",{id:"creating-%2F-updating-%2F-deleting",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#creating-%2F-updating-%2F-deleting"},"#"),s(" Creating / Updating / Deleting")],-1),T=t("p",null,"Similarly to fetching, relational content can be modified deeply as well.",-1),E=t("h4",{id:"many-to-one",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#many-to-one"},"#"),s(" Many-to-One")],-1),v=t("p",null,"Many-to-One relationships are fairly straightforward to manage relationally. You can simply submit the changes you want as an object under the relational key in your collection. For example, if you wanted to create a new featured article on your page, you could submit:",-1),A=t("pre",null,[t("code",{class:"language-json"},[t("span",{class:"hljs-punctuation"},"{"),s(`
2
- `),t("span",{class:"hljs-attr"},'"featured_article"'),t("span",{class:"hljs-punctuation"},":"),s(),t("span",{class:"hljs-punctuation"},"{"),s(`
3
- `),t("span",{class:"hljs-attr"},'"title"'),t("span",{class:"hljs-punctuation"},":"),s(),t("span",{class:"hljs-string"},'"This is my new article!"'),s(`
4
- `),t("span",{class:"hljs-punctuation"},"}"),s(`
5
- `),t("span",{class:"hljs-punctuation"},"}"),s(`
6
- `)])],-1),k=t("p",null,[s("This will create a new record in the related collection, and save its primary key in the "),t("code",null,"featured_article"),s(" field for this item. To update an existing item, simply provide the primary key with the updates, and Directus will treat it as an update instead of a creation:")],-1),I=t("pre",null,[t("code",{class:"language-json"},[t("span",{class:"hljs-punctuation"},"{"),s(`
7
- `),t("span",{class:"hljs-attr"},'"featured_article"'),t("span",{class:"hljs-punctuation"},":"),s(),t("span",{class:"hljs-punctuation"},"{"),s(`
8
- `),t("span",{class:"hljs-attr"},'"id"'),t("span",{class:"hljs-punctuation"},":"),s(),t("span",{class:"hljs-number"},"15"),t("span",{class:"hljs-punctuation"},","),s(`
9
- `),t("span",{class:"hljs-attr"},'"title"'),t("span",{class:"hljs-punctuation"},":"),s(),t("span",{class:"hljs-string"},'"This is an updated title for my article!"'),s(`
10
- `),t("span",{class:"hljs-punctuation"},"}"),s(`
11
- `),t("span",{class:"hljs-punctuation"},"}"),s(`
12
- `)])],-1),P=t("p",null,"Seeing that the Many-to-One relationship stores the foreign key on the field itself, removing the item can be done by nullifying the field:",-1),x=t("pre",null,[t("code",{class:"language-json"},[t("span",{class:"hljs-punctuation"},"{"),s(`
13
- `),t("span",{class:"hljs-attr"},'"featured_article"'),t("span",{class:"hljs-punctuation"},":"),s(),t("span",{class:"hljs-literal"},[t("span",{class:"hljs-keyword"},"null")]),s(`
14
- `),t("span",{class:"hljs-punctuation"},"}"),s(`
15
- `)])],-1),D=t("h4",{id:"one-to-many-(%2F-many-to-many)",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#one-to-many-(%2F-many-to-many)"},"#"),s(" One-to-Many (/ Many-to-Many)")],-1),S=t("p",null,"One-to-Many, and therefore Many-to-Many and Many-to-Any, relationships can be updated in one of two ways:",-1),R=t("p",null,[t("strong",null,"Basic")],-1),q=t("p",null,[s("The API will return one-to-many fields as an array of nested keys or items (based on the "),t("code",null,"fields"),s(" parameter). You can use this same structure to select what the related items are:")],-1),L=t("pre",null,[t("code",{class:"language-json"},[t("span",{class:"hljs-punctuation"},"{"),s(`
16
- `),t("span",{class:"hljs-attr"},'"children"'),t("span",{class:"hljs-punctuation"},":"),s(),t("span",{class:"hljs-punctuation"},"["),t("span",{class:"hljs-number"},"2"),t("span",{class:"hljs-punctuation"},","),s(),t("span",{class:"hljs-number"},"7"),t("span",{class:"hljs-punctuation"},","),s(),t("span",{class:"hljs-number"},"149"),t("span",{class:"hljs-punctuation"},"]"),s(`
17
- `),t("span",{class:"hljs-punctuation"},"}"),s(`
18
- `)])],-1),N=t("p",null,"You can also provide an object instead of a primary key in order to create new items nested on the fly, or an object with a primary key included to update an existing item:",-1),O=t("pre",null,[t("code",{class:"language-json"},[t("span",{class:"hljs-punctuation"},"{"),s(`
19
- `),t("span",{class:"hljs-attr"},'"children"'),t("span",{class:"hljs-punctuation"},":"),s(),t("span",{class:"hljs-punctuation"},"["),s(`
20
- `),t("span",{class:"hljs-number"},"2"),t("span",{class:"hljs-punctuation"},","),s(),t("span",{class:"hljs-comment"},"// assign existing item 2 to be a child of the current item"),s(`
21
- `),t("span",{class:"hljs-punctuation"},"{"),s(`
22
- `),t("span",{class:"hljs-attr"},'"name"'),t("span",{class:"hljs-punctuation"},":"),s(),t("span",{class:"hljs-string"},'"A new nested item"'),s(`
23
- `),t("span",{class:"hljs-punctuation"},"}"),t("span",{class:"hljs-punctuation"},","),s(`
24
- `),t("span",{class:"hljs-punctuation"},"{"),s(`
25
- `),t("span",{class:"hljs-attr"},'"id"'),t("span",{class:"hljs-punctuation"},":"),s(),t("span",{class:"hljs-number"},"149"),t("span",{class:"hljs-punctuation"},","),s(`
26
- `),t("span",{class:"hljs-attr"},'"name"'),t("span",{class:"hljs-punctuation"},":"),s(),t("span",{class:"hljs-string"},'"Assign and update existing item 149"'),s(`
27
- `),t("span",{class:"hljs-punctuation"},"}"),s(`
28
- `),t("span",{class:"hljs-punctuation"},"]"),s(`
29
- `),t("span",{class:"hljs-punctuation"},"}"),s(`
30
- `)])],-1),C=t("p",null,"To remove items from this relationship, simply omit them from the array:",-1),H=t("pre",null,[t("code",{class:"language-json"},[t("span",{class:"hljs-punctuation"},"{"),s(`
31
- `),t("span",{class:"hljs-attr"},'"children"'),t("span",{class:"hljs-punctuation"},":"),s(),t("span",{class:"hljs-punctuation"},"["),t("span",{class:"hljs-number"},"2"),t("span",{class:"hljs-punctuation"},","),s(),t("span",{class:"hljs-number"},"149"),t("span",{class:"hljs-punctuation"},"]"),s(`
32
- `),t("span",{class:"hljs-punctuation"},"}"),s(`
33
- `)])],-1),U=t("p",null,"This method of updating a one-to-many is very useful for smaller relational datasets.",-1),G=t("p",null,[t("strong",null,"\u201CDetailed\u201D")],-1),M=t("p",null,"Alternatively, you can provide an object detailing the changes as follows:",-1),V=t("pre",null,[t("code",{class:"language-json"},[t("span",{class:"hljs-punctuation"},"{"),s(`
34
- `),t("span",{class:"hljs-attr"},'"children"'),t("span",{class:"hljs-punctuation"},":"),s(),t("span",{class:"hljs-punctuation"},"{"),s(`
35
- `),t("span",{class:"hljs-attr"},'"create"'),t("span",{class:"hljs-punctuation"},":"),s(),t("span",{class:"hljs-punctuation"},"["),t("span",{class:"hljs-punctuation"},"{"),s(),t("span",{class:"hljs-attr"},'"name"'),t("span",{class:"hljs-punctuation"},":"),s(),t("span",{class:"hljs-string"},'"A new nested item"'),s(),t("span",{class:"hljs-punctuation"},"}"),t("span",{class:"hljs-punctuation"},"]"),t("span",{class:"hljs-punctuation"},","),s(`
36
- `),t("span",{class:"hljs-attr"},'"update"'),t("span",{class:"hljs-punctuation"},":"),s(),t("span",{class:"hljs-punctuation"},"["),t("span",{class:"hljs-punctuation"},"{"),s(),t("span",{class:"hljs-attr"},'"id"'),t("span",{class:"hljs-punctuation"},":"),s(),t("span",{class:"hljs-number"},"149"),t("span",{class:"hljs-punctuation"},","),s(),t("span",{class:"hljs-attr"},'"name"'),t("span",{class:"hljs-punctuation"},":"),s(),t("span",{class:"hljs-string"},'"A new nested item"'),s(),t("span",{class:"hljs-punctuation"},"}"),t("span",{class:"hljs-punctuation"},"]"),t("span",{class:"hljs-punctuation"},","),s(`
37
- `),t("span",{class:"hljs-attr"},'"delete"'),t("span",{class:"hljs-punctuation"},":"),s(),t("span",{class:"hljs-punctuation"},"["),t("span",{class:"hljs-number"},"7"),t("span",{class:"hljs-punctuation"},"]"),s(`
38
- `),t("span",{class:"hljs-punctuation"},"}"),s(`
39
- `),t("span",{class:"hljs-punctuation"},"}"),s(`
40
- `)])],-1),F=t("p",null,"This is useful if you need to have more tightly control on staged changes, or when you\u2019re working with a big relational dataset.",-1),Q=t("h4",{id:"many-to-any-(union-types)",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#many-to-any-(union-types)"},"#"),s(" Many-to-Any (Union Types)")],-1),B=t("p",null,"Many-to-Any fields work very similar to a \u201Cregular\u201D many-to-many, with the exception that the related field can pull in the fields from any of the related collections, for example:",-1),Y=t("pre",null,[t("code",{class:"language-json"},[t("span",{class:"hljs-punctuation"},"{"),s(`
41
- `),t("span",{class:"hljs-attr"},'"sections"'),t("span",{class:"hljs-punctuation"},":"),s(),t("span",{class:"hljs-punctuation"},"["),s(`
42
- `),t("span",{class:"hljs-punctuation"},"{"),s(`
43
- `),t("span",{class:"hljs-attr"},'"collection"'),t("span",{class:"hljs-punctuation"},":"),s(),t("span",{class:"hljs-string"},'"headings"'),t("span",{class:"hljs-punctuation"},","),s(`
44
- `),t("span",{class:"hljs-attr"},'"item"'),t("span",{class:"hljs-punctuation"},":"),s(),t("span",{class:"hljs-punctuation"},"{"),s(`
45
- `),t("span",{class:"hljs-comment"},"/* headings fields */"),s(`
46
- `),t("span",{class:"hljs-punctuation"},"}"),s(`
47
- `),t("span",{class:"hljs-punctuation"},"}"),t("span",{class:"hljs-punctuation"},","),s(`
48
- `),t("span",{class:"hljs-punctuation"},"{"),s(`
49
- `),t("span",{class:"hljs-attr"},'"collection"'),t("span",{class:"hljs-punctuation"},":"),s(),t("span",{class:"hljs-string"},'"paragraphs"'),t("span",{class:"hljs-punctuation"},","),s(`
50
- `),t("span",{class:"hljs-attr"},'"item"'),t("span",{class:"hljs-punctuation"},":"),s(),t("span",{class:"hljs-punctuation"},"{"),s(`
51
- `),t("span",{class:"hljs-comment"},"/* paragraphs fields */"),s(`
52
- `),t("span",{class:"hljs-punctuation"},"}"),s(`
53
- `),t("span",{class:"hljs-punctuation"},"}"),s(`
54
- `),t("span",{class:"hljs-punctuation"},"]"),s(`
55
- `),t("span",{class:"hljs-punctuation"},"}"),s(`
56
- `)])],-1),W=t("h5",{id:"rest-api",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#rest-api"},"#"),s(" REST API")],-1),z=t("p",null,[s("To scope the fields that are returned per collection type, you can use the "),t("code",null,"<field>:<scope>"),s(" syntax in the fields parameter as follows:")],-1),K=t("pre",null,[t("code",null,`GET /items/pages
57
- ?fields[]=sections.item:headings.id
58
- &fields[]=sections.item:headings.title
59
- &fields[]=sections.item:paragraphs.body
60
- &fields[]=sections.item:paragraphs.background_color
61
- `)],-1),X=t("h5",{id:"graphql",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#graphql"},"#"),s(" GraphQL")],-1),J=t("p",null,"In GraphQL, you can use nested fragments on the Union Type to select the fields:",-1),Z=t("pre",null,[t("code",{class:"language-graphql"},[t("span",{class:"hljs-keyword"},"query"),s(` {
62
- pages {
63
- sections {
64
- item {
65
- `),t("span",{class:"hljs-keyword"},"..."),s(),t("span",{class:"hljs-keyword"},"on"),s(` headings {
66
- id
67
- title
68
- }
69
-
70
- `),t("span",{class:"hljs-keyword"},"..."),s(),t("span",{class:"hljs-keyword"},"on"),s(` paragraphs {
71
- body
72
- background_color
73
- }
74
- }
75
- }
76
- }
77
- }
78
- `)])],-1),$=t("div",{class:"tip hint"},[t("div",{class:"hint-title"},"Updating"),t("p",null,"Updating records in a many-to-any is identical to the other relationship types.")],-1),tt=t("h2",{id:"search-http-method",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#search-http-method"},"#"),s(" SEARCH HTTP Method")],-1),st=t("p",null,"When using the REST API to read multiple items by (very) advanced filters, you might run into the issue where the URL simply can\u2019t hold enough data to include the full query structure. In those cases, you can use the SEARCH HTTP method as a drop-in replacement for GET, where you\u2019re allowed to put the query into the request body as follows:",-1),nt=t("p",null,[t("strong",null,"Before:")],-1),et=t("pre",null,[t("code",null,`GET /items/articles?filter[title][_eq]=Hello World
79
- `)],-1),at=t("p",null,[t("strong",null,"After:")],-1),lt=t("pre",null,[t("code",{class:"language-json"},[s(`SEARCH /items/articles
80
-
81
- `),t("span",{class:"hljs-punctuation"},"{"),s(`
82
- `),t("span",{class:"hljs-attr"},'"query"'),t("span",{class:"hljs-punctuation"},":"),s(),t("span",{class:"hljs-punctuation"},"{"),s(`
83
- `),t("span",{class:"hljs-attr"},'"filter"'),t("span",{class:"hljs-punctuation"},":"),s(),t("span",{class:"hljs-punctuation"},"{"),s(`
84
- `),t("span",{class:"hljs-attr"},'"title"'),t("span",{class:"hljs-punctuation"},":"),s(),t("span",{class:"hljs-punctuation"},"{"),s(`
85
- `),t("span",{class:"hljs-attr"},'"_eq"'),t("span",{class:"hljs-punctuation"},":"),s(),t("span",{class:"hljs-string"},'"Hello World"'),s(`
86
- `),t("span",{class:"hljs-punctuation"},"}"),s(`
87
- `),t("span",{class:"hljs-punctuation"},"}"),s(`
88
- `),t("span",{class:"hljs-punctuation"},"}"),s(`
89
- `),t("span",{class:"hljs-punctuation"},"}"),s(`
90
- `)])],-1),ot=t("p",null,[s("There\u2019s a lot of discussion around whether or not to put a body in a GET request, to use POSTs to create search queries, or to rely on a different method altogether. As of right now, we\u2019ve chosen "),t("a",{href:"https://datatracker.ietf.org/doc/draft-ietf-httpbis-safe-method-w-body",target:"_blank",rel:"noopener noreferrer"},[s("to align with IETF\u2019s "),t("em",null,"HTTP SEARCH Method"),s(" specification")]),s(". While we recognize this is still a draft spec, the SEARCH method has been used extensively before in the WebDAV world ("),t("a",{href:"https://tools.ietf.org/html/rfc5323",target:"_blank",rel:"noopener noreferrer"},"spec"),s("), and compared to the other available options, it feels like the \u201Ccleanest\u201D and most correct to handle this moving forward. As with everything else, if you have any ideas, opinions, or concerns, "),t("a",{href:"https://github.com/directus/directus/discussions/new",target:"_blank",rel:"noopener noreferrer"},"we\u2019d love to hear your thoughts"),s(".")],-1),it=t("p",null,"Useful reading:",-1),ct=t("ul",null,[t("li",null,[t("a",{href:"https://datatracker.ietf.org/doc/draft-ietf-httpbis-safe-method-w-body",target:"_blank",rel:"noopener noreferrer"},[t("em",null,"HTTP SEARCH Method"),s(" (IETF, 2021)")])]),t("li",null,[t("a",{href:"https://httptoolkit.tech/blog/http-search-method",target:"_blank",rel:"noopener noreferrer"},[t("em",null,"Defining a new HTTP method: HTTP SEARCH"),s(" (Tim Perry, 2021)")])]),t("li",null,[t("a",{href:"https://stackoverflow.com/questions/978061/http-get-with-request-body",target:"_blank",rel:"noopener noreferrer"},[t("em",null,"HTTP GET with request body"),s(" (StackOverflow, 2009 and ongoing)")])]),t("li",null,[t("a",{href:"https://www.elastic.co/guide/en/elasticsearch/guide/current/_empty_search.html",target:"_blank",rel:"noopener noreferrer"},[t("em",null,"Elastic Search GET body usage"),s(" (elastic, n.d.)")])]),t("li",null,[t("a",{href:"https://evertpot.com/dropbox-post-api",target:"_blank",rel:"noopener noreferrer"},[t("em",null,"Dropbox starts using POST, and why this is poor API design."),s(" (Evert Pot, 2015)")])])],-1),rt=t("h2",{id:"system-data-in-graphql",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#system-data-in-graphql"},"#"),s(" System data in GraphQL")],-1),ut=t("p",null,[s("Due to restrictions in GraphQL itself, it\u2019s impossible to properly scope/namespace system functionality from regular data access. In order to prevent any naming conflicts between user-created and system data, we\u2019ve scoped the access of the two into separate endpoints for user and system data respectively: "),t("code",null,"/graphql"),s(" and "),t("code",null,"/graphql/system"),s(". Both endpoints share the same underlying schema, so "),t("strong",null,"nested relations will work as expected"),s(" regardless if they \u201Ccross over\u201D between user and system data. The only difference in the two endpoints are the root query and mutation fields available.")],-1),ht=t("h2",{id:"error-codes",tabindex:"-1"},[t("a",{class:"header-anchor",href:"#error-codes"},"#"),s(" Error Codes")],-1),dt=t("p",null,"Below are the global error codes used within Directus, and what they mean.",-1),pt=t("table",null,[t("thead",null,[t("tr",null,[t("th",null,"Error Code"),t("th",null,"HTTP Status"),t("th",null,"Description")])]),t("tbody",null,[t("tr",null,[t("td",null,[t("code",null,"FAILED_VALIDATION")]),t("td",null,"400"),t("td",null,"Validation for this particular item failed")]),t("tr",null,[t("td",null,[t("code",null,"FORBIDDEN")]),t("td",null,"403"),t("td",null,"You are not allowed to do the current action")]),t("tr",null,[t("td",null,[t("code",null,"INVALID_TOKEN")]),t("td",null,"403"),t("td",null,"Provided token is invalid")]),t("tr",null,[t("td",null,[t("code",null,"TOKEN_EXPIRED")]),t("td",null,"401"),t("td",null,"Provided token is valid but has expired")]),t("tr",null,[t("td",null,[t("code",null,"INVALID_CREDENTIALS")]),t("td",null,"401"),t("td",null,"Username / password or access token is wrong")]),t("tr",null,[t("td",null,[t("code",null,"INVALID_IP")]),t("td",null,"401"),t("td",null,"Your IP address isn\u2019t allow-listed to be used with this user")]),t("tr",null,[t("td",null,[t("code",null,"INVALID_OTP")]),t("td",null,"401"),t("td",null,"Wrong OTP was provided")]),t("tr",null,[t("td",null,[t("code",null,"INVALID_PAYLOAD")]),t("td",null,"400"),t("td",null,"Provided payload is invalid")]),t("tr",null,[t("td",null,[t("code",null,"INVALID_QUERY")]),t("td",null,"400"),t("td",null,"The requested query parameters can not be used")]),t("tr",null,[t("td",null,[t("code",null,"UNSUPPORTED_MEDIA_TYPE")]),t("td",null,"415"),t("td",null,[s("Provided payload format or "),t("code",null,"Content-Type"),s(" header is unsupported")])]),t("tr",null,[t("td",null,[t("code",null,"REQUESTS_EXCEEDED")]),t("td",null,"429"),t("td",null,"Hit the rate limit")]),t("tr",null,[t("td",null,[t("code",null,"ROUTE_NOT_FOUND")]),t("td",null,"404"),t("td",null,"Endpoint does not exist")]),t("tr",null,[t("td",null,[t("code",null,"SERVICE_UNAVAILABLE")]),t("td",null,"503"),t("td",null,"Could not use external service")]),t("tr",null,[t("td",null,[t("code",null,"UNPROCESSABLE_ENTITY")]),t("td",null,"422"),t("td",null,"You tried doing something illegal")])])],-1),ft=t("div",{class:"warning hint"},[t("div",{class:"hint-title"},"Security"),t("p",null,[s("To prevent leaking which items exist, all actions for non-existing items will return a "),t("code",null,"FORBIDDEN"),s(" error.")])],-1),gt="API Reference",bt=!1,wt="An introduction to the REST and GraphQL APIs in Directus.",Tt="7 min read",Et="page-reference",vt={__name:"introduction",setup(mt,{expose:i}){const l={title:"API Reference",modularExtension:!1,description:"An introduction to the REST and GraphQL APIs in Directus.",readTime:"7 min read",pageClass:"page-reference"};return i({frontmatter:l}),(jt,_t)=>{const e=o("router-link"),c=o("docs-wrapper");return r(),u(c,{frontmatter:l},{default:n(()=>[t("div",h,[d,p,t("p",null,[s("The platform\u2019s API uses "),a(e,{to:"/docs/getting-started/introduction#database-mirroring"},{default:n(()=>[s("Database Mirroring")]),_:1}),s(" to dynamically generate REST endpoints and a GraphQL schema based on the connected database\u2019s architecture. Since these endpoints return data based on your specific schema and configured permissions, the input/output of the API differs greatly for individual installations.")]),f,m,j,_,t("p",null,[s("By default, all data in the system is off-limits for unauthenticated users. To gain access to protected data, you must "),a(e,{to:"/docs/reference/authentication#access-tokens"},{default:n(()=>[s("include an access token with every request")]),_:1}),s(", or "),a(e,{to:"/docs/getting-started/quickstart#_6-set-role-public-permissions"},{default:n(()=>[s("configure permissions for the public role")]),_:1}),s(".")]),y,t("ul",null,[t("li",null,[a(e,{to:"/docs/reference/authentication"},{default:n(()=>[s("Authenticating into the API")]),_:1})]),t("li",null,[a(e,{to:"/docs/reference/authentication#login"},{default:n(()=>[s("Login endpoint reference")]),_:1})])]),g,t("p",null,[s("Directus only retrieves the fields in your items that explicitly have been requested. Relational data can be retrieved nested by using "),a(e,{to:"/docs/reference/query#fields"},{default:n(()=>[s("the "),b,s(" parameter")]),_:1}),s(" in REST, or regular nested queries in GraphQL. This allows you to retrieve the author of your article included in the articles data, or fetch related log entry points for your app\u2019s analytics data for example.")]),w,T,E,v,A,k,I,P,x,D,S,R,q,L,N,O,C,H,U,G,M,V,F,Q,B,Y,W,z,K,X,J,Z,$,tt,st,nt,et,at,lt,ot,it,ct,rt,ut,ht,dt,pt,ft])]),_:1})}}};export{vt as default,wt as description,bt as modularExtension,Et as pageClass,Tt as readTime,gt as title};
@@ -1 +0,0 @@
1
- import{a,o as r,e as c,y as s,u as e,q as t,z as o}from"./runtime-core.esm-bundler.22ec0346.js";const u={class:"markdown-body"},h=e("blockquote",null,[e("p",null,"In addition to being highly customizable, Directus has been architected to be completely modular and extensible. This ensures you will never hit a hard feature ceiling within the platform.")],-1),p=e("p",null,"Build, modify or expand any feature needed for your app or project. What makes Directus so flexible is that it has been designed from the ground up with complete extensibility. In addition to offering our software\u2019s codebase as open-source, we\u2019ve broken down the app code into component pieces called Extensions. New Extensions can be created, modified or expanded to suit any need. However, the following extension types come with the platform\u2019s App and API.",-1),x=e("h2",{id:"extension-sdk",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#extension-sdk"},"#"),t(" Extension SDK")],-1),_=e("h2",{id:"app-extensions",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#app-extensions"},"#"),t(" App Extensions")],-1),m=e("p",null,"Allow creating custom experiences within the Directus App.",-1),f=e("h2",{id:"api-extensions",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#api-extensions"},"#"),t(" API Extensions")],-1),w=e("p",null,"Allow extending and customizing the data pipeline and platform logic.",-1),b=e("h2",{id:"hybrid-extensions",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#hybrid-extensions"},"#"),t(" Hybrid Extensions")],-1),y=e("p",null,"Allow adding functionality to the API as well as the App.",-1),k="Extensions",A=!1,v="An introduction to custom Extensions in Directus.",V="2 min read",D={__name:"introduction",setup(g,{expose:l}){const i={title:"Extensions",modularExtension:!1,description:"An introduction to custom Extensions in Directus.",readTime:"2 min read"};return l({frontmatter:i}),(E,C)=>{const n=a("router-link"),d=a("docs-wrapper");return r(),c(d,{frontmatter:i},{default:s(()=>[e("div",u,[h,p,x,e("p",null,[t("The easiest way to start creating extensions is to use the "),o(n,{to:"/docs/extensions/creating-extensions"},{default:s(()=>[t("Extensions SDK")]),_:1}),t(".")]),_,m,e("ul",null,[e("li",null,[o(n,{to:"/docs/extensions/modules"},{default:s(()=>[t("Modules")]),_:1}),t(" \u2014 Created with Vue.js")]),e("li",null,[o(n,{to:"/docs/extensions/layouts"},{default:s(()=>[t("Layouts")]),_:1}),t(" \u2014 Created with Vue.js")]),e("li",null,[o(n,{to:"/docs/extensions/interfaces"},{default:s(()=>[t("Interfaces")]),_:1}),t(" \u2014 Created with Vue.js")]),e("li",null,[o(n,{to:"/docs/extensions/displays"},{default:s(()=>[t("Displays")]),_:1}),t(" \u2014 Created with Vue.js")]),e("li",null,[o(n,{to:"/docs/extensions/panels"},{default:s(()=>[t("Panels")]),_:1}),t(" \u2014 Created with Vue.js")]),e("li",null,[o(n,{to:"/docs/extensions/themes"},{default:s(()=>[t("Themes")]),_:1}),t(" \u2014 Created with custom CSS")])]),f,w,e("ul",null,[e("li",null,[o(n,{to:"/docs/extensions/endpoints"},{default:s(()=>[t("Endpoints")]),_:1}),t(" \u2014 Created with JavaScript / Node.js")]),e("li",null,[o(n,{to:"/docs/extensions/hooks"},{default:s(()=>[t("Hooks")]),_:1}),t(" \u2014 Created with JavaScript / Node.js")]),e("li",null,[o(n,{to:"/docs/extensions/email-templates"},{default:s(()=>[t("Email Templates")]),_:1}),t(" \u2014 Created with Liquid.js")]),e("li",null,[o(n,{to:"/docs/extensions/migrations"},{default:s(()=>[t("Migrations")]),_:1}),t(" \u2014 Created with JavaScript / Node.js")])]),b,y,e("ul",null,[e("li",null,[o(n,{to:"/docs/extensions/operations"},{default:s(()=>[t("Operations")]),_:1}),t(" \u2014 Created with Vue.js and JavaScript / Node.js")])])])]),_:1})}}};export{D as default,v as description,A as modularExtension,V as readTime,k as title};
@@ -1 +0,0 @@
1
- import{a as i,o as d,e as c,y as o,u as e,q as t,z as s}from"./runtime-core.esm-bundler.22ec0346.js";const u={class:"markdown-body"},h=e("blockquote",null,[e("p",null,"These Docs will help you get Directus up-and-running quickly, guide you through advanced features, and explain the core concepts that make Directus so unique.")],-1),p=e("h2",{id:"what-is-directus%3F",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#what-is-directus%3F"},"#"),t(" What is Directus?")],-1),m=e("div",{class:"tip hint"},[e("div",{class:"hint-title"},"Directus"),e("p",null,[t("Directus ("),e("a",{href:"http://audio.pronouncekiwi.com/Salli/Directus",target:"_blank",rel:"noopener noreferrer"},"duh REKT iss"),t(") is Latin for: "),e("em",null,"laid straight, arranged in lines"),t("."),e("br"),t(" The broadest goal of our platform is to present data in a simple, orderly, and intuitive way.")])],-1),g=e("p",null,[e("strong",null,"Directus is an Open Data Platform built to democratize the database."),e("br"),t(" This platform provides everyone on your team, "),e("em",null,"regardless of technical skill"),t(", equal access to data and digital file asset management, for any data model or project. First, link Directus to your desired SQL database and file storage adapter. After that, Directus enables you to perform CRUD operations, create users, assign roles with fully configurable permissions, build complex and granular queries, configure event-driven webhooks and task automation\u2026 "),e("em",null,"the list goes on!")],-1),f=e("p",null,[e("strong",null,"Database Introspection & Abstraction"),e("br"),t(" SQL flavors all come with slightly different data types and idiosyncrasies. Directus uses "),e("a",{href:"#how-it-works"},"Database Introspection"),t(" to read your database structure and create an abstraction layer to handle all the nitty-gritty details behind the scenes. This technique works seamlessly with any major SQL database. It also lets you link Directus to your new or pre-existing database or remove it anytime, with no impact on your existing data model. That means you\u2019ll never encounter vendor lock-in.")],-1),y=e("p",null,[e("strong",null,"The App and APIs"),e("br"),t(" Once your database is introspected and abstracted, Directus dynamically generates REST and GraphQL API endpoints to manage your data with granular control. You also get CLI tools for file management and a complete JavaScript SDK.")],-1),_=e("p",null,[t("The API and CLI power the no-code App. In other words, the App is just a GUI that provides no-code access to the API. This architecture is how Directus democratizes the database and provides control to "),e("a",{href:"#who-s-it-for"},"the whole team"),t(".")],-1),b=e("p",null,[e("strong",null,"Open-Source, Modular, Extensible, Scalable"),e("br"),t(" At the highest level, Directus organizes its features and functionality into Modules. Each Module allows you to interact with data in some specific way, such as data and content management, digital file asset management, drag and drop analytics dashboard creation, or whatever. If you find Directus is missing something that your project needs, no problem!")],-1),w=e("p",null,[t("Built entirely in Typescript, primarily on "),e("a",{href:"https://nodejs.dev",target:"_blank",rel:"noopener noreferrer"},"Node.js"),t(" and "),e("a",{href:"https://vuejs.org",target:"_blank",rel:"noopener noreferrer"},"Vue.js"),t(", Directus is 100% open-source, modular and extensible, ensuring your project never hits a hard feature ceiling. The platform scales without issue, "),e("em",null,"and some Projects have hundreds of millions of users.")],-1),v=e("p",null,[t("You can use it with any "),e("em",null,"(or many)"),t(" stacks or frontend frameworks.")],-1),D=e("p",null,[e("strong",null,"Custom Configuration Options"),e("br"),t(" Extensive configuration options are also available as global variables in the codebase. Developers can custom configure SSO authentication method, caching details, default file storage location (local, S3, google, etc.) for digital assets, emails, "),e("em",null,"and much more.")],-1),k={class:"tip hint"},x=e("div",{class:"hint-title"},"Ready to dive in?",-1),T=e("h2",{id:"how-it-works",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#how-it-works"},"#"),t(" How It Works")],-1),I=e("p",null,[e("strong",null,[t("Directus is installed as a "),e("em",null,"layer"),t(" on top of your new or existing SQL database.")])],-1),S=e("p",null,[t("The App and API dynamically "),e("em",null,"\u201Cmirror\u201D"),t(" your actual schema and content in real-time. This is similar to how technical database clients (like "),e("em",null,"phpMyAdmin"),t(") work. However, Database Introspection has many unique advantages:")],-1),C=e("ul",null,[e("li",null,"Absolute control over your pure SQL database schema."),e("li",null,"Complete transparency, portability, and security for your data."),e("li",null,"Allows importing existing databases, unaltered and without migrations."),e("li",null,"Direct database access and the full power of raw, complex SQL queries."),e("li",null,"Significant performance improvements through optimizations and indexing.")],-1),A=e("p",null,[t("In contrast, other platforms typically use a predefined or proprietary "),e("em",null,"one-size-fits-all"),t(" data model to store content . That is not the case with Directus. Directus gives you direct access to your pure and unaltered data. That means you have the option to bypass the Directus middleware (API, SDK, App) and connect to your data with proper SQL queries. This effectively removes all bottlenecks, latency overhead, and proprietary access limitations.")],-1),j=e("h2",{id:"who%E2%80%99s-it-for%3F",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#who%E2%80%99s-it-for%3F"},"#"),t(" Who\u2019s It For?")],-1),P=e("p",null,[e("strong",null,"Directus lets the whole team work together and access data in one place.")],-1),E=e("p",null,[e("strong",null,"Developers"),e("br"),t(" Developers get a complete data connection toolkit with REST and GraphQL APIs, a JavaScript SDK, access to global variables to customize configuration options, and direct command-line access to digital assets.")],-1),q=e("p",null,[e("strong",null,"Power Users"),e("br"),t(" Data analysts and data scientists have in-app tools to query data, build out in-app analytics dashboards, and extract or upload data in file format. Additionally, these users are still free to link other services and run raw SQL queries directly on the database.")],-1),L=e("p",null,[e("strong",null,"Business Users"),e("br"),t(" The no-code app is safe and intuitive enough to make data accessible to everyone, even the most non-technical users. Administrators can create fully granular permissions for roles as well as individual users.")],-1),Q={class:"tip hint"},z=e("div",{class:"hint-title"},"Directus Vocabulary",-1),B=e("em",null,"especially for the no-code users",-1),F=e("h2",{id:"when-to-use-it",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#when-to-use-it"},"#"),t(" When to Use It")],-1),M=e("p",null,[e("strong",null,"Directus can power any data-driven project and can be linked or removed at any time.")],-1),N=e("p",null,[t("Build, monitor or manage any data model or app you desire: IoT fleets, e-commerce, SaaS, business data analytics, multi-channel content, "),e("em",null,"or anything else!"),t(" If it involves SQL and digital files, you can link up Directus. With this in mind, four broad use cases do emerge:")],-1),R=e("p",null,[e("strong",null,"Backend as a Service"),e("br"),t(" An end-to-end data solution. Efficiently connects data, auto-generates exhaustive APIs for projects that scale, and provides webhooks and task automation. Completely detached from the database, you\u2019re free to link and remove Directus anytime or use any other service in tandem.")],-1),U=e("p",null,[e("strong",null,"Headless CMS"),e("br"),t(" Remember, "),e("em",null,"content"),t(" is just data from a database! Manage any omnichannel digital experience. Deliver file assets and data across websites, apps, kiosks, digital signage\u2026 "),e("em",null,"the sky\u2019s the limit!")],-1),W=e("p",null,[e("strong",null,"Internal Tool Builder"),e("br"),t(" The whole team can build custom apps! Ditch the spreadsheet and quickly build back-office apps and admin panels for customers, inventory, projects, marketing, "),e("em",null,"or anything else.")],-1),G=e("p",null,[e("strong",null,"Data Management and Analytics"),e("br"),t(" Establish "),e("em",null,"a single source of truth"),t(" for all data. Build no-code analytics dashboards to gain insights into company KPIs and other metrics. Coalesce previously siloed department data.")],-1),O=e("h2",{id:"why-use-it%3F",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#why-use-it%3F"},"#"),t(" Why Use It?")],-1),Y=e("p",null,[e("strong",null,"Directus is a simple, data-first solution to complex problems with no downsides.")],-1),K=e("p",null,[t("Directus was created in 2004 and has been slowly, iteratively improved on for a long time. The core team has carefully thought through the app, beginning to end, and strives to make this platform is an all-benefit and no downside experience. It is also plug-and-play, so you\u2019re free to link or remove it anytime, with zero impact on your data. You have no vendor lock-in whatsoever, "),e("em",null,"your data is yours"),t(". There are no artificial data limits "),e("em",null,"(e.g. limits on users or roles)"),t(".")],-1),V=e("p",null,[t("Consider competing platforms in the four general use cases "),e("a",{href:"#when-to-use-it"},"mentioned above"),t(". Due diligence to select a viable solution from one of these categories can easily take six months to ensure the feature list, pricing, scalability, migration options, etc\u2026 all match the project in question. However, with Directus, that\u2019s not the case! You can test it immediately on an existing database or build a new data model from scratch, "),e("em",null,"with no impact on your data and no long-term commitments.")],-1),H=e("p",null,"The following core principles guide this platform:",-1),J=e("ul",null,[e("li",null,[e("strong",null,"Pure"),t(" \u2014 No predefined or proprietary schema. All system metadata is stored separately.")]),e("li",null,[e("strong",null,"Open"),t(" \u2014 Directus Core is open source, with no obfuscated or cloud-only code.")]),e("li",null,[e("strong",null,"Portable"),t(" \u2014 No vendor lock-in. Your database can be exported or migrated anytime.")]),e("li",null,[e("strong",null,"Limitless"),t(" \u2014 No arbitrary limits or paywalls on users, roles, translations, and data.")]),e("li",null,[e("strong",null,"Extensible"),t(" \u2014 Every aspect of this platform is modular to avoid any hard feature ceiling.")]),e("li",null,[e("strong",null,"Unopinionated"),t(" \u2014 Choose the stack, database, and architecture as you wish.")])],-1),X=e("h2",{id:"directus-cloud",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#directus-cloud"},"#"),t(" Directus Cloud")],-1),Z=e("p",null,[e("strong",null,"Directus Cloud is the fastest and easiest way to get your Directus Projects going.")],-1),$=e("p",null,"With your free Directus Cloud account, you can set up Teams to organize Projects, Project billing, and other Team Members however you need. You\u2019ll be able to get a Project running in about 90 seconds. Then as Project growth changes over time, scale service up or down as needed at the click of a button. The cloud dashboard also provides simple, straightforward analytics to help understand traffic and inform scaling decisions.",-1),ee={class:"tip hint"},te=e("div",{class:"hint-title"},"Ready to try Directus Cloud?",-1),oe=e("div",{class:"tip hint"},[e("div",{class:"hint-title"},"Enterprise Cloud"),e("p",null,[t("Need advanced configuration, unlimited scalability, and dedicated support? "),e("a",{href:"https://directus.io/contact",target:"_blank",rel:"noopener noreferrer"},"Contact us")])],-1),re="Introduction",le=!1,de="An introduction to what Directus is, how it works, who it is for, and when to use it.",ce="8 min read",ue={__name:"introduction",setup(ae,{expose:r}){const n={title:"Introduction",modularExtension:!1,description:"An introduction to what Directus is, how it works, who it is for, and when to use it.",readTime:"8 min read"};return r({frontmatter:n}),(se,ne)=>{const a=i("router-link"),l=i("docs-wrapper");return d(),c(l,{frontmatter:n},{default:o(()=>[e("div",u,[h,p,m,g,f,y,_,b,w,v,D,e("div",k,[x,e("p",null,[t("Get a free project running in minutes. Learn Directus hands-on in the "),s(a,{to:"/docs/getting-started/quickstart"},{default:o(()=>[t("Quickstart Guide")]),_:1}),t(".")])]),T,I,S,C,A,j,P,E,q,L,e("div",Q,[z,e("p",null,[t("To keep things simpler, "),B,t(", Directus uses friendlier names for many database terms and technical concepts, including "),s(a,{to:"/docs/getting-started/glossary#projects"},{default:o(()=>[t("Project")]),_:1}),t(" (database), "),s(a,{to:"/docs/getting-started/glossary#collections"},{default:o(()=>[t("Collection")]),_:1}),t(" (table), "),s(a,{to:"/docs/getting-started/glossary#fields"},{default:o(()=>[t("Field")]),_:1}),t(" (column), "),s(a,{to:"/docs/getting-started/glossary#items"},{default:o(()=>[t("Item")]),_:1}),t(" (record), and "),s(a,{to:"/docs/getting-started/glossary#types"},{default:o(()=>[t("Type")]),_:1}),t(" (datatype).")])]),F,M,N,R,U,W,G,O,Y,K,V,H,J,X,Z,e("p",null,[t("Cloud architecture can be complicated and resource-intensive. Directus Cloud provides scalable, optimized storage and infrastructure, and automatic updates so developers can focus on the app\u2019s core business logic. Directus Cloud also offers "),s(a,{to:"/docs/cloud/glossary#cloud-exclusives"},{default:o(()=>[t("Cloud Exclusive Extensions")]),_:1}),t(", enhancing Directus Core with even more features.")]),$,e("div",ee,[te,e("p",null,[t("Set up your free Cloud account and learn Directus hands-on in the "),s(a,{to:"/docs/getting-started/quickstart"},{default:o(()=>[t("Quickstart Guide")]),_:1}),t(".")])]),oe])]),_:1})}}};export{ue as default,de as description,le as modularExtension,ce as readTime,re as title};
@@ -1 +0,0 @@
1
- var a={edit_translation_string:"Breyta \xFE\xFD\xF0ingastreng",invite_users:"Bj\xF3\xF0a notendum",invite:"Bj\xF3\xF0a",update_bookmark:"Uppf\xE6ra b\xF3kamerki",delete_bookmark:"Ey\xF0a b\xF3kamerki",delete_global_bookmark:"Ey\xF0a alt\xE6ku b\xF3kamerki",logoutReason:{SIGN_OUT:"Skr\xE1\xF0 \xFAt",SESSION_EXPIRED:"Lota \xFAtrunnin"},public_label:"Almennt",os_type:"Ger\xF0 st\xFDrikerfis",os_version:"\xDAtg\xE1fa st\xFDrikerfis",os_uptime:"Uppit\xEDmi st\xFDrikerfis",activity:"Virkni",choices:"Val",add_new:"B\xE6ta vi\xF0 n\xFDjum"},e=a.edit_translation_string,t=a.invite_users,i=a.invite,r=a.update_bookmark,o=a.delete_bookmark,s=a.delete_global_bookmark,_=a.logoutReason,n=a.public_label,l=a.os_type,k=a.os_version,v=a.os_uptime,b=a.activity,d=a.choices,u=a.add_new;export{b as activity,u as add_new,d as choices,a as default,o as delete_bookmark,s as delete_global_bookmark,e as edit_translation_string,i as invite,t as invite_users,_ as logoutReason,l as os_type,v as os_uptime,k as os_version,n as public_label,r as update_bookmark};
@@ -1 +0,0 @@
1
- function s(r,o){for(var a=0;a<o.length;a++){const e=o[a];if(typeof e!="string"&&!Array.isArray(e)){for(const t in e)if(t!=="default"&&!(t in r)){const i=Object.getOwnPropertyDescriptor(e,t);i&&Object.defineProperty(r,t,i.get?i:{enumerable:!0,get:()=>e[t]})}}}return Object.freeze(Object.defineProperty(r,Symbol.toStringTag,{value:"Module"}))}var n={};Object.defineProperty(n,"__esModule",{value:!0});var l={code:"is",week:{dow:1,doy:4},buttonText:{prev:"Fyrri",next:"N\xE6sti",today:"\xCD dag",month:"M\xE1nu\xF0ur",week:"Vika",day:"Dagur",list:"Dagskr\xE1"},weekText:"Vika",allDayText:"Allan daginn",moreLinkText:"meira",noEventsText:"Engir vi\xF0bur\xF0ir til a\xF0 s\xFDna"},u=n.default=l;const d=s({__proto__:null,default:u},[n]);export{d as i};