typo3-typescript-sources 13.4.20

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 (415) hide show
  1. package/.github/workflows/sync-and-publish.yml +265 -0
  2. package/.last-synced-tag +1 -0
  3. package/LICENSE.txt +339 -0
  4. package/README-TYPO3.md +166 -0
  5. package/README.md +28 -0
  6. package/adminpanel/admin-panel.ts +375 -0
  7. package/adminpanel/modules/cache.ts +27 -0
  8. package/adminpanel/modules/preview.ts +75 -0
  9. package/backend/action-button/abstract-action.ts +22 -0
  10. package/backend/action-button/deferred-action.ts +41 -0
  11. package/backend/action-button/immediate-action.ts +31 -0
  12. package/backend/action-dispatcher.ts +104 -0
  13. package/backend/ajax-data-handler/message-interface.ts +18 -0
  14. package/backend/ajax-data-handler/response-interface.ts +20 -0
  15. package/backend/ajax-data-handler.ts +214 -0
  16. package/backend/backend-exception.ts +22 -0
  17. package/backend/broadcast-message.ts +50 -0
  18. package/backend/broadcast-service.ts +52 -0
  19. package/backend/browse-database.ts +38 -0
  20. package/backend/clear-cache.ts +88 -0
  21. package/backend/clipboard-panel.ts +240 -0
  22. package/backend/close-current-window.ts +2 -0
  23. package/backend/code-editor/autocomplete/completion-result.ts +105 -0
  24. package/backend/code-editor/autocomplete/ts-code-completion.ts +142 -0
  25. package/backend/code-editor/autocomplete/ts-parser.ts +485 -0
  26. package/backend/code-editor/autocomplete/ts-ref.ts +164 -0
  27. package/backend/code-editor/element/code-mirror-element.ts +282 -0
  28. package/backend/code-editor/language/typoscript.ts +181 -0
  29. package/backend/code-editor/stream-parser/typoscript.ts +1600 -0
  30. package/backend/color-picker.ts +158 -0
  31. package/backend/color-scheme-switch.ts +179 -0
  32. package/backend/column-selector-button.ts +302 -0
  33. package/backend/context-help.ts +68 -0
  34. package/backend/context-menu-actions.ts +322 -0
  35. package/backend/context-menu.ts +751 -0
  36. package/backend/copy-to-clipboard.ts +79 -0
  37. package/backend/date-time-picker.ts +270 -0
  38. package/backend/document-save-actions.ts +159 -0
  39. package/backend/drag-tooltip.ts +285 -0
  40. package/backend/drag-uploader.ts +914 -0
  41. package/backend/element/alert-element.ts +116 -0
  42. package/backend/element/dispatch-modal-button.ts +50 -0
  43. package/backend/element/draggable-resizable-element.ts +249 -0
  44. package/backend/element/editable-page-title.ts +306 -0
  45. package/backend/element/icon-element.ts +84 -0
  46. package/backend/element/immediate-action-element.ts +89 -0
  47. package/backend/element/pagination.ts +59 -0
  48. package/backend/element/progress-bar-element.ts +172 -0
  49. package/backend/element/progress-tracker-element.ts +119 -0
  50. package/backend/element/pseudo-button.ts +58 -0
  51. package/backend/element/spinner-element.ts +51 -0
  52. package/backend/element/thumbnail-element.ts +80 -0
  53. package/backend/element-browser.ts +182 -0
  54. package/backend/enum/data-transfer-types.ts +21 -0
  55. package/backend/enum/icon-types.ts +31 -0
  56. package/backend/enum/key-types.ts +27 -0
  57. package/backend/enum/severity.ts +20 -0
  58. package/backend/enum/viewport/scaffold-identifier.ts +24 -0
  59. package/backend/event/client-request.ts +25 -0
  60. package/backend/event/consumable.ts +18 -0
  61. package/backend/event/consumer-scope.ts +54 -0
  62. package/backend/event/event-dispatcher.ts +26 -0
  63. package/backend/event/interaction-request-assignment.ts +24 -0
  64. package/backend/event/interaction-request-map.ts +75 -0
  65. package/backend/event/interaction-request.ts +48 -0
  66. package/backend/event/trigger-request.ts +56 -0
  67. package/backend/form/submit-interceptor.ts +66 -0
  68. package/backend/form-engine/container/files-control-container.ts +716 -0
  69. package/backend/form-engine/container/flex-form-container-container.ts +166 -0
  70. package/backend/form-engine/container/flex-form-section-container.ts +210 -0
  71. package/backend/form-engine/container/inline-control-container.ts +1230 -0
  72. package/backend/form-engine/container/site-language-container.ts +616 -0
  73. package/backend/form-engine/element/abstract-sortable-select-items.ts +186 -0
  74. package/backend/form-engine/element/category-element.ts +160 -0
  75. package/backend/form-engine/element/color-element.ts +81 -0
  76. package/backend/form-engine/element/datetime-element.ts +66 -0
  77. package/backend/form-engine/element/extra/char-counter.ts +112 -0
  78. package/backend/form-engine/element/extra/select-box-filter.ts +85 -0
  79. package/backend/form-engine/element/folder-element.ts +66 -0
  80. package/backend/form-engine/element/group-element.ts +47 -0
  81. package/backend/form-engine/element/json-element.ts +52 -0
  82. package/backend/form-engine/element/link-element.ts +121 -0
  83. package/backend/form-engine/element/mfa-info-element.ts +169 -0
  84. package/backend/form-engine/element/modifier/resizable.ts +27 -0
  85. package/backend/form-engine/element/modifier/tabbable.ts +29 -0
  86. package/backend/form-engine/element/online-media-form-element.ts +65 -0
  87. package/backend/form-engine/element/password-element.ts +71 -0
  88. package/backend/form-engine/element/select-multiple-side-by-side-element.ts +83 -0
  89. package/backend/form-engine/element/select-single-element.ts +82 -0
  90. package/backend/form-engine/element/select-tree-element.ts +148 -0
  91. package/backend/form-engine/element/select-tree-toolbar.ts +118 -0
  92. package/backend/form-engine/element/select-tree.ts +210 -0
  93. package/backend/form-engine/element/slug-element.ts +243 -0
  94. package/backend/form-engine/element/suggest/result-container.ts +118 -0
  95. package/backend/form-engine/element/suggest/result-item.ts +90 -0
  96. package/backend/form-engine/element/table-permission-element.ts +101 -0
  97. package/backend/form-engine/element/table-wizard-element.ts +427 -0
  98. package/backend/form-engine/element/text-element.ts +52 -0
  99. package/backend/form-engine/element/text-table-element.ts +31 -0
  100. package/backend/form-engine/field-control/add-record.ts +40 -0
  101. package/backend/form-engine/field-control/edit-popup.ts +64 -0
  102. package/backend/form-engine/field-control/insert-clipboard.ts +50 -0
  103. package/backend/form-engine/field-control/link-popup.ts +53 -0
  104. package/backend/form-engine/field-control/list-module.ts +40 -0
  105. package/backend/form-engine/field-control/password-generator.ts +102 -0
  106. package/backend/form-engine/field-control/reset-selection.ts +48 -0
  107. package/backend/form-engine/field-wizard/localization-state-selector.ts +67 -0
  108. package/backend/form-engine/field-wizard/value-picker.ts +123 -0
  109. package/backend/form-engine/field-wizard/value-slider.ts +86 -0
  110. package/backend/form-engine/inline-relation/ajax-dispatcher.ts +124 -0
  111. package/backend/form-engine/inline-relation/inline-response-interface.ts +41 -0
  112. package/backend/form-engine-link-browser-adapter.ts +129 -0
  113. package/backend/form-engine-review.ts +155 -0
  114. package/backend/form-engine-suggest.ts +133 -0
  115. package/backend/form-engine-validation.ts +686 -0
  116. package/backend/form-engine.ts +1391 -0
  117. package/backend/global-event-handler.ts +252 -0
  118. package/backend/grid-editor.ts +1077 -0
  119. package/backend/hashing/md5.ts +252 -0
  120. package/backend/helper.ts +24 -0
  121. package/backend/hotkeys/hotkey-storage.ts +63 -0
  122. package/backend/hotkeys.ts +216 -0
  123. package/backend/icons.ts +236 -0
  124. package/backend/image-manipulation.ts +885 -0
  125. package/backend/info-window.ts +46 -0
  126. package/backend/input/clearable.ts +128 -0
  127. package/backend/input/index.d.ts +8 -0
  128. package/backend/java-script-module-import-event-handler.ts +19 -0
  129. package/backend/key-bindings.ts +42 -0
  130. package/backend/layout-module/drag-drop.ts +359 -0
  131. package/backend/layout-module/paste.ts +165 -0
  132. package/backend/link-browser.ts +89 -0
  133. package/backend/live-search/element/backend-search.ts +34 -0
  134. package/backend/live-search/element/hint.ts +33 -0
  135. package/backend/live-search/element/provider/default-result-item.ts +52 -0
  136. package/backend/live-search/element/provider/page-provider-result-item.ts +52 -0
  137. package/backend/live-search/element/result/item/action/action-container.ts +135 -0
  138. package/backend/live-search/element/result/item/action/action.ts +56 -0
  139. package/backend/live-search/element/result/item/item-container.ts +224 -0
  140. package/backend/live-search/element/result/item/item.ts +74 -0
  141. package/backend/live-search/element/result/result-container.ts +110 -0
  142. package/backend/live-search/element/result/result-detail-container.ts +50 -0
  143. package/backend/live-search/element/result/result-pagination.ts +122 -0
  144. package/backend/live-search/element/search-option-item.ts +70 -0
  145. package/backend/live-search/live-search-configurator.ts +54 -0
  146. package/backend/live-search/live-search-shortcut.ts +29 -0
  147. package/backend/live-search/result-types/backend-module-result-type.ts +8 -0
  148. package/backend/live-search/result-types/default-result-type.ts +21 -0
  149. package/backend/live-search/result-types/page-result-type.ts +23 -0
  150. package/backend/localization.ts +390 -0
  151. package/backend/login-refresh.ts +525 -0
  152. package/backend/login.ts +179 -0
  153. package/backend/mail-link-handler.ts +45 -0
  154. package/backend/modal-interface.ts +19 -0
  155. package/backend/modal.ts +685 -0
  156. package/backend/module/iframe.ts +125 -0
  157. package/backend/module/router.ts +275 -0
  158. package/backend/module-menu.ts +550 -0
  159. package/backend/module.ts +133 -0
  160. package/backend/multi-record-selection-action.ts +44 -0
  161. package/backend/multi-record-selection-delete-action.ts +108 -0
  162. package/backend/multi-record-selection-edit-action.ts +56 -0
  163. package/backend/multi-record-selection.ts +468 -0
  164. package/backend/multi-step-wizard.ts +568 -0
  165. package/backend/new-content-element-wizard-button.ts +51 -0
  166. package/backend/new-multiple-pages.ts +108 -0
  167. package/backend/new-record-wizard.ts +680 -0
  168. package/backend/notification.ts +366 -0
  169. package/backend/offset.ts +40 -0
  170. package/backend/online-media.ts +110 -0
  171. package/backend/page-actions.ts +91 -0
  172. package/backend/page-link-handler.ts +51 -0
  173. package/backend/pagetsconfig/pagetsconfig-includes.ts +77 -0
  174. package/backend/popover.ts +165 -0
  175. package/backend/record-download-button.ts +104 -0
  176. package/backend/record-link-handler.ts +31 -0
  177. package/backend/record-search.ts +44 -0
  178. package/backend/recordlist.ts +230 -0
  179. package/backend/resource/resource.ts +35 -0
  180. package/backend/security/element/csp-reports.ts +406 -0
  181. package/backend/security/element/sudo-mode.ts +249 -0
  182. package/backend/security/sudo-mode-interceptor.ts +19 -0
  183. package/backend/settings/editor/editable-setting.ts +231 -0
  184. package/backend/settings/editor.ts +451 -0
  185. package/backend/settings/enum/settings-mode.enum.ts +24 -0
  186. package/backend/settings/type/base.ts +200 -0
  187. package/backend/settings/type/bool.ts +56 -0
  188. package/backend/settings/type/color.ts +64 -0
  189. package/backend/settings/type/int.ts +85 -0
  190. package/backend/settings/type/number.ts +61 -0
  191. package/backend/settings/type/page.ts +100 -0
  192. package/backend/settings/type/string.ts +77 -0
  193. package/backend/settings/type/stringlist.ts +87 -0
  194. package/backend/severity.ts +88 -0
  195. package/backend/site-inline-actions.ts +32 -0
  196. package/backend/sortable-table.ts +208 -0
  197. package/backend/storage/abstract-client-storage.ts +76 -0
  198. package/backend/storage/browser-session.ts +28 -0
  199. package/backend/storage/client.ts +28 -0
  200. package/backend/storage/module-state-storage.ts +118 -0
  201. package/backend/storage/persistent.ts +204 -0
  202. package/backend/switch-user.ts +82 -0
  203. package/backend/tabs.ts +72 -0
  204. package/backend/telephone-link-handler.ts +40 -0
  205. package/backend/tests/backend/storage/browser-storage-test.ts +87 -0
  206. package/backend/tests/backend/storage/client-test.ts +87 -0
  207. package/backend/tests/backend/utility/dom-helper-test.ts +51 -0
  208. package/backend/tests/backend-exception-test.ts +28 -0
  209. package/backend/tests/element/immediate-action-element-test.ts +81 -0
  210. package/backend/tests/form-engine-validation-test.ts +304 -0
  211. package/backend/tests/grid-editor-test.ts +29 -0
  212. package/backend/tests/hashing/md5Test.ts +28 -0
  213. package/backend/tests/icons-test.ts +23 -0
  214. package/backend/tests/notification-test.ts +161 -0
  215. package/backend/tests/popover-test.ts +83 -0
  216. package/backend/toolbar/clear-cache-menu.ts +88 -0
  217. package/backend/toolbar/live-search.ts +284 -0
  218. package/backend/toolbar/shortcut-menu.ts +254 -0
  219. package/backend/toolbar/system-information-menu.ts +161 -0
  220. package/backend/toolbar.ts +41 -0
  221. package/backend/tree/file-storage-browser.ts +194 -0
  222. package/backend/tree/file-storage-tree-container.ts +465 -0
  223. package/backend/tree/file-storage-tree.ts +42 -0
  224. package/backend/tree/page-browser.ts +272 -0
  225. package/backend/tree/page-tree-element.ts +602 -0
  226. package/backend/tree/page-tree.ts +152 -0
  227. package/backend/tree/tree-module-state.ts +159 -0
  228. package/backend/tree/tree-node-toggle.ts +31 -0
  229. package/backend/tree/tree-node.ts +97 -0
  230. package/backend/tree/tree-toolbar.ts +117 -0
  231. package/backend/tree/tree.ts +1595 -0
  232. package/backend/url-link-handler.ts +36 -0
  233. package/backend/user-pass-login.ts +255 -0
  234. package/backend/user-settings-manager.ts +189 -0
  235. package/backend/utility/collapse-state-persister.ts +205 -0
  236. package/backend/utility/collapse-state-search.ts +183 -0
  237. package/backend/utility/dom-helper.ts +91 -0
  238. package/backend/utility/drag-drop-utility.ts +47 -0
  239. package/backend/utility/message-utility.ts +45 -0
  240. package/backend/utility/top-level-module-import.ts +32 -0
  241. package/backend/utility.ts +194 -0
  242. package/backend/viewport/abstract-container.ts +22 -0
  243. package/backend/viewport/content-container.ts +98 -0
  244. package/backend/viewport/loader.ts +28 -0
  245. package/backend/viewport/navigation-container.ts +119 -0
  246. package/backend/viewport/resizable-navigation.ts +176 -0
  247. package/backend/viewport/toolbar.ts +27 -0
  248. package/backend/viewport/topbar.ts +39 -0
  249. package/backend/viewport.ts +46 -0
  250. package/backend/window-manager.ts +84 -0
  251. package/backend/wizard/move-content-element.ts +107 -0
  252. package/backend/wizard/move-page.ts +74 -0
  253. package/backend/wizard.ts +331 -0
  254. package/belog/backend-log.ts +88 -0
  255. package/beuser/backend-user-listing.ts +40 -0
  256. package/beuser/permissions.ts +291 -0
  257. package/core/ajax/ajax-request-types.ts +15 -0
  258. package/core/ajax/ajax-request.ts +202 -0
  259. package/core/ajax/ajax-response.ts +57 -0
  260. package/core/ajax/input-transformer.ts +92 -0
  261. package/core/ajax/simple-response-interface.ts +5 -0
  262. package/core/authentication/mfa-provider/totp.ts +54 -0
  263. package/core/cache/dedupe-async-task.ts +95 -0
  264. package/core/directive/markdown.ts +82 -0
  265. package/core/directive/nl2br.ts +16 -0
  266. package/core/document-service.ts +35 -0
  267. package/core/event/debounce-event.ts +40 -0
  268. package/core/event/event-interface.ts +24 -0
  269. package/core/event/regular-event.ts +58 -0
  270. package/core/event/request-animation-frame-event.ts +42 -0
  271. package/core/event/throttle-event.ts +54 -0
  272. package/core/java-script-item-handler.ts +29 -0
  273. package/core/java-script-item-processor.ts +171 -0
  274. package/core/lit-helper.ts +126 -0
  275. package/core/literals.ts +17 -0
  276. package/core/referrer-refresh.ts +2 -0
  277. package/core/security-utility.ts +89 -0
  278. package/core/tests/ajax/ajax-request-test.ts +290 -0
  279. package/core/tests/ajax/input-transformer-test.ts +64 -0
  280. package/core/tests/cache/dedupe-async-task-test.ts +152 -0
  281. package/core/tests/event/throttle-event-test.ts +47 -0
  282. package/core/tests/literals-test.ts +24 -0
  283. package/core/tests/security-utility-test.ts +50 -0
  284. package/core/utility/types.ts +9 -0
  285. package/dashboard/chart-initializer.ts +136 -0
  286. package/dashboard/dashboard.ts +1487 -0
  287. package/extensionmanager/distribution-image.ts +55 -0
  288. package/extensionmanager/main.ts +291 -0
  289. package/extensionmanager/repository.ts +195 -0
  290. package/extensionmanager/update.ts +118 -0
  291. package/extensionmanager/upload-form.ts +42 -0
  292. package/filelist/browse-files.ts +148 -0
  293. package/filelist/browse-folders.ts +94 -0
  294. package/filelist/context-menu-actions.ts +335 -0
  295. package/filelist/create-folder.ts +69 -0
  296. package/filelist/file-delete.ts +69 -0
  297. package/filelist/file-list-actions.ts +132 -0
  298. package/filelist/file-list-dragdrop.ts +139 -0
  299. package/filelist/file-list-rename-handler.ts +128 -0
  300. package/filelist/file-list-transfer-handler.ts +138 -0
  301. package/filelist/file-list.ts +396 -0
  302. package/filelist/file-replace.ts +37 -0
  303. package/filelist/linkbrowser-file-handler.ts +94 -0
  304. package/filelist/linkbrowser-folder-handler.ts +74 -0
  305. package/filelist/rename-file.ts +109 -0
  306. package/form/backend/form-editor/component/property-grid-editor.ts +340 -0
  307. package/form/backend/form-editor/core.ts +2104 -0
  308. package/form/backend/form-editor/helper.ts +226 -0
  309. package/form/backend/form-editor/inspector-component.ts +2323 -0
  310. package/form/backend/form-editor/mediator.ts +941 -0
  311. package/form/backend/form-editor/modals-component.ts +433 -0
  312. package/form/backend/form-editor/stage-component.ts +908 -0
  313. package/form/backend/form-editor/tree-component.ts +548 -0
  314. package/form/backend/form-editor/view-model.ts +1343 -0
  315. package/form/backend/form-editor.ts +846 -0
  316. package/form/backend/form-manager/main.ts +39 -0
  317. package/form/backend/form-manager/view-model.ts +789 -0
  318. package/form/backend/form-manager.ts +180 -0
  319. package/form/backend/helper.ts +60 -0
  320. package/form/frontend/date-picker.ts +38 -0
  321. package/frontend/default_frontend.ts +82 -0
  322. package/impexp/context-menu-actions.ts +50 -0
  323. package/impexp/import-export.ts +62 -0
  324. package/indexed-search/pagination.ts +26 -0
  325. package/indexed-search/statistics.ts +50 -0
  326. package/info/translation-status.ts +48 -0
  327. package/install/ajax/ajax-queue.ts +83 -0
  328. package/install/init-install.ts +2 -0
  329. package/install/init-installer.ts +2 -0
  330. package/install/install.ts +25 -0
  331. package/install/installer.ts +458 -0
  332. package/install/message-interface.ts +18 -0
  333. package/install/module/abstract-inline-module.ts +27 -0
  334. package/install/module/abstract-interactable-module.ts +107 -0
  335. package/install/module/environment/environment-check.ts +92 -0
  336. package/install/module/environment/folder-structure.ts +145 -0
  337. package/install/module/environment/image-processing.ts +141 -0
  338. package/install/module/environment/mail-test.ts +127 -0
  339. package/install/module/environment/php-info.ts +50 -0
  340. package/install/module/environment/system-information.ts +50 -0
  341. package/install/module/maintenance/cache.ts +59 -0
  342. package/install/module/maintenance/clear-tables.ts +134 -0
  343. package/install/module/maintenance/clear-typo3temp-files.ts +137 -0
  344. package/install/module/maintenance/create-admin.ts +126 -0
  345. package/install/module/maintenance/database-analyzer.ts +266 -0
  346. package/install/module/maintenance/dump-autoload.ts +58 -0
  347. package/install/module/maintenance/language-packs.ts +338 -0
  348. package/install/module/maintenance/reset-backend-user-uc.ts +58 -0
  349. package/install/module/password-strength.ts +56 -0
  350. package/install/module/settings/change-install-tool-password.ts +101 -0
  351. package/install/module/settings/extension-configuration.ts +224 -0
  352. package/install/module/settings/features.ts +102 -0
  353. package/install/module/settings/local-configuration.ts +316 -0
  354. package/install/module/settings/presets.ts +147 -0
  355. package/install/module/settings/system-maintainer.ts +111 -0
  356. package/install/module/upgrade/core-update.ts +255 -0
  357. package/install/module/upgrade/extension-compat-tester.ts +195 -0
  358. package/install/module/upgrade/extension-scanner.ts +381 -0
  359. package/install/module/upgrade/tca-ext-tables-check.ts +93 -0
  360. package/install/module/upgrade/tca-migrations-check.ts +101 -0
  361. package/install/module/upgrade/upgrade-docs.ts +310 -0
  362. package/install/module/upgrade/upgrade-wizards.ts +612 -0
  363. package/install/renderable/clearable.ts +113 -0
  364. package/install/renderable/flash-message.ts +64 -0
  365. package/install/renderable/info-box.ts +66 -0
  366. package/install/renderable/language-packs.ts +304 -0
  367. package/install/renderable/offset-group.ts +38 -0
  368. package/install/renderable/severity.ts +49 -0
  369. package/install/renderable/wrap-group.ts +36 -0
  370. package/install/router.ts +468 -0
  371. package/linkvalidator/linkvalidator-modal.ts +45 -0
  372. package/linkvalidator/linkvalidator.ts +101 -0
  373. package/lowlevel/query-generator.ts +132 -0
  374. package/lowlevel/reference-index.ts +44 -0
  375. package/opendocs/toolbar/opendocs-menu.ts +117 -0
  376. package/package.json +34 -0
  377. package/recycler/recycler.ts +539 -0
  378. package/redirects/event-handler.ts +108 -0
  379. package/redirects/form-engine-evaluation.ts +34 -0
  380. package/redirects/redirects-module.ts +58 -0
  381. package/rte-ckeditor/ckeditor5.ts +402 -0
  382. package/rte-ckeditor/css-prefixer.ts +94 -0
  383. package/rte-ckeditor/legacy/ckeditor5-bundle.ts +17 -0
  384. package/rte-ckeditor/legacy/ckeditor5-inspector.ts +2 -0
  385. package/rte-ckeditor/plugin/typo3-link.ts +810 -0
  386. package/rte-ckeditor/plugin/whitespace.ts +114 -0
  387. package/rte-ckeditor/rte-link-browser.ts +112 -0
  388. package/rte-ckeditor/tests/css-prefixer-test.ts +314 -0
  389. package/scheduler/scheduler-add-group.ts +119 -0
  390. package/scheduler/scheduler-editable-group-name.ts +307 -0
  391. package/scheduler/scheduler-sortable-groups.ts +59 -0
  392. package/scheduler/scheduler.ts +466 -0
  393. package/setup/setup-module.ts +122 -0
  394. package/styleguide/checkbox-demo.ts +5 -0
  395. package/styleguide/element/theme-switcher-element.ts +101 -0
  396. package/styleguide/filter.ts +22 -0
  397. package/styleguide/find-icons.ts +78 -0
  398. package/styleguide/processing-indicator.ts +78 -0
  399. package/styleguide/render-notifications.ts +64 -0
  400. package/sys-note/element/delete-button.ts +78 -0
  401. package/tstemplate/constant-editor.ts +64 -0
  402. package/tstemplate/information-module.ts +31 -0
  403. package/tstemplate/template-analyzer.ts +77 -0
  404. package/viewpage/main.ts +253 -0
  405. package/workspaces/backend.ts +979 -0
  406. package/workspaces/preview.ts +232 -0
  407. package/workspaces/renderable/comment-view.ts +79 -0
  408. package/workspaces/renderable/diff-view.ts +58 -0
  409. package/workspaces/renderable/history-view.ts +97 -0
  410. package/workspaces/renderable/record-information.ts +118 -0
  411. package/workspaces/renderable/record-table.ts +355 -0
  412. package/workspaces/renderable/send-to-stage-form.ts +108 -0
  413. package/workspaces/toolbar/workspaces-menu.ts +190 -0
  414. package/workspaces/utility/icon-helper.ts +57 -0
  415. package/workspaces/workspaces.ts +136 -0
@@ -0,0 +1,64 @@
1
+ /*
2
+ * This file is part of the TYPO3 CMS project.
3
+ *
4
+ * It is free software; you can redistribute it and/or modify it under
5
+ * the terms of the GNU General Public License, either version 2
6
+ * of the License, or any later version.
7
+ *
8
+ * For the full copyright and license information, please read the
9
+ * LICENSE.txt file that was distributed with this source code.
10
+ *
11
+ * The TYPO3 project - inspiring people to share!
12
+ */
13
+
14
+ import { InputTransformer, type GenericKeyValue } from '@typo3/core/ajax/input-transformer.js';
15
+ import { expect } from '@open-wc/testing';
16
+ import type { } from 'mocha';
17
+
18
+ describe('@typo3/core/ajax/input-transformer', (): void => {
19
+ it('converts object to FormData', (): void => {
20
+ const input: GenericKeyValue = { foo: 'bar', bar: 'baz', nested: { works: 'yes' } };
21
+ const expected = new FormData();
22
+ expected.set('foo', 'bar');
23
+ expected.set('bar', 'baz');
24
+ expected.set('nested[works]', 'yes');
25
+
26
+ expect(InputTransformer.toFormData(input)).to.eql(expected);
27
+ });
28
+
29
+ it('undefined values are removed in FormData', (): void => {
30
+ const input: GenericKeyValue = { foo: 'bar', bar: 'baz', removeme: undefined };
31
+ const expected = new FormData();
32
+ expected.set('foo', 'bar');
33
+ expected.set('bar', 'baz');
34
+
35
+ expect(InputTransformer.toFormData(input)).to.eql(expected);
36
+ });
37
+
38
+ it('converts object to SearchParams', (): void => {
39
+ const input: GenericKeyValue = { foo: 'bar', bar: 'baz', nested: { works: 'yes' } };
40
+ const expected = 'foo=bar&bar=baz&nested[works]=yes';
41
+
42
+ expect(InputTransformer.toSearchParams(input)).to.equal(expected);
43
+ });
44
+
45
+ it('merges array to SearchParams', (): void => {
46
+ const input: Array<string> = ['foo=bar', 'bar=baz'];
47
+ const expected = 'foo=bar&bar=baz';
48
+
49
+ expect(InputTransformer.toSearchParams(input)).to.equal(expected);
50
+ });
51
+
52
+ it('keeps string in SearchParams', (): void => {
53
+ const input: string = 'foo=bar&bar=baz';
54
+ const expected = 'foo=bar&bar=baz';
55
+
56
+ expect(InputTransformer.toSearchParams(input)).to.equal(expected);
57
+ });
58
+
59
+ it('undefined values are removed in SearchParams', (): void => {
60
+ const input: GenericKeyValue = { foo: 'bar', bar: 'baz', removeme: undefined };
61
+ const expected = 'foo=bar&bar=baz';
62
+ expect(InputTransformer.toSearchParams(input)).to.equal(expected);
63
+ });
64
+ });
@@ -0,0 +1,152 @@
1
+ /*
2
+ * This file is part of the TYPO3 CMS project.
3
+ *
4
+ * It is free software; you can redistribute it and/or modify it under
5
+ * the terms of the GNU General Public License, either version 2
6
+ * of the License, or any later version.
7
+ *
8
+ * For the full copyright and license information, please read the
9
+ * LICENSE.txt file that was distributed with this source code.
10
+ *
11
+ * The TYPO3 project - inspiring people to share!
12
+ */
13
+
14
+ import { DedupeAsyncTask } from '@typo3/core/cache/dedupe-async-task.js';
15
+ import { expect } from '@open-wc/testing';
16
+ import type { } from 'mocha';
17
+
18
+ interface Cache<T> {
19
+ promise: Promise<T>,
20
+ abortController: AbortController,
21
+ refCount: number,
22
+ }
23
+
24
+ interface DedupeAsyncTaskPublic<T> {
25
+ promises: Record<string, Cache<T>>;
26
+ }
27
+
28
+ describe('@typo3/core/cache/dedupe-async-task', (): void => {
29
+ it('dedupes', async (): Promise<void> => {
30
+ let counter = 0;
31
+ const task = async (): Promise<number> => {
32
+ return ++counter;
33
+ };
34
+ const dedupe = new DedupeAsyncTask<number>();
35
+ const a = await dedupe.get('foo', task);
36
+ const b = await dedupe.get('foo', task);
37
+ expect(a).to.equal(1);
38
+ expect(b).to.equal(1);
39
+ });
40
+
41
+ describe('aborts requests', (): void => {
42
+ const boolTask = async (signal: AbortSignal): Promise<boolean> => {
43
+ await new Promise((resolve) => window.setTimeout(resolve, 0));
44
+ return !signal.aborted;
45
+ };
46
+
47
+ it('if all requests are aborted', async (): Promise<void> => {
48
+ let wasAborted: boolean;
49
+ const task = async (signal: AbortSignal): Promise<void> => {
50
+ await new Promise((resolve) => window.setTimeout(resolve, 0));
51
+ wasAborted = signal.aborted;
52
+ };
53
+
54
+ const dedupe = new DedupeAsyncTask<void>();
55
+
56
+ const abortControllerA = new AbortController();
57
+ const aPromise = dedupe.get('foo', task, abortControllerA.signal);
58
+
59
+ const abortControllerB = new AbortController();
60
+ const bPromise = dedupe.get('foo', task, abortControllerB.signal);
61
+
62
+ const internalPromise = (dedupe as unknown as DedupeAsyncTaskPublic<void>).promises.foo.promise;
63
+ abortControllerA.abort();
64
+ abortControllerB.abort();
65
+
66
+ let aHasError = false;
67
+ try {
68
+ await aPromise;
69
+ } catch {
70
+ aHasError = true;
71
+ }
72
+ let bHasError = false;
73
+ try {
74
+ await bPromise;
75
+ } catch {
76
+ bHasError = true;
77
+ }
78
+
79
+ expect(aHasError).to.be.true;
80
+ expect(bHasError).to.be.true;
81
+ await internalPromise;
82
+ expect(wasAborted).to.be.true;
83
+ });
84
+
85
+ it('unless only first request is aborted', async (): Promise<void> => {
86
+ const dedupe = new DedupeAsyncTask<boolean>();
87
+
88
+ const abortControllerA = new AbortController();
89
+ const aPromise = dedupe.get('foo', boolTask, abortControllerA.signal);
90
+
91
+ const abortControllerB = new AbortController();
92
+ const bPromise = dedupe.get('foo', boolTask, abortControllerB.signal);
93
+
94
+ abortControllerA.abort();
95
+
96
+ let error: Error;
97
+ try {
98
+ await aPromise;
99
+ } catch (e: unknown) {
100
+ error = e as Error;
101
+ }
102
+ const b = await bPromise;
103
+
104
+ expect(error.name).to.equal('AbortError');
105
+ expect(b).to.be.true;
106
+ });
107
+
108
+ it('unless only last request is aborted', async (): Promise<void> => {
109
+ const dedupe = new DedupeAsyncTask<boolean>();
110
+
111
+ const abortControllerA = new AbortController();
112
+ const aPromise = dedupe.get('foo', boolTask, abortControllerA.signal);
113
+
114
+ let a: boolean | null;
115
+ const aInBackground = aPromise.then((v) => a = v).catch((): void => a = null);
116
+
117
+ const abortControllerB = new AbortController();
118
+ const bPromise = dedupe.get('foo', boolTask, abortControllerB.signal);
119
+
120
+ abortControllerB.abort('stop b!');
121
+ let b: boolean|null;
122
+ try {
123
+ b = await bPromise;
124
+ } catch {
125
+ b = null;
126
+ }
127
+
128
+ await aInBackground;
129
+
130
+ expect(a).to.be.true;
131
+ expect(b).to.be.null;
132
+ });
133
+
134
+
135
+ it('if previous request already succeeded', async (): Promise<void> => {
136
+ const dedupe = new DedupeAsyncTask<boolean>();
137
+ const a = await dedupe.get('foo', boolTask);
138
+ const abortControllerB = new AbortController();
139
+ abortControllerB.abort();
140
+ let error: Error;
141
+ try {
142
+ await dedupe.get('foo', boolTask, abortControllerB.signal);
143
+ } catch (e: unknown) {
144
+ error = e as Error;
145
+ }
146
+
147
+ expect(a).to.be.true;
148
+ expect(error.name).to.equal('AbortError');
149
+ });
150
+
151
+ });
152
+ });
@@ -0,0 +1,47 @@
1
+ /*
2
+ * This file is part of the TYPO3 CMS project.
3
+ *
4
+ * It is free software; you can redistribute it and/or modify it under
5
+ * the terms of the GNU General Public License, either version 2
6
+ * of the License, or any later version.
7
+ *
8
+ * For the full copyright and license information, please read the
9
+ * LICENSE.txt file that was distributed with this source code.
10
+ *
11
+ * The TYPO3 project - inspiring people to share!
12
+ */
13
+
14
+ import ThrottleEvent from '@typo3/core/event/throttle-event.js';
15
+ import { expect } from '@open-wc/testing';
16
+ import type { } from 'mocha';
17
+
18
+ describe('@typo3/core/event/throttle-event', () => {
19
+ it('does not duplicate events', async () => {
20
+ let count = 0;
21
+ const div = document.createElement('div');
22
+ new ThrottleEvent('my-event', () => count++, 1).bindTo(div);
23
+ div.dispatchEvent(new Event('my-event'));
24
+ // await some milliseconds to account for possibly broken implementation that dispatches twice
25
+ await new Promise<void>(resolve => setTimeout(resolve, 5));
26
+ expect(count).to.equal(1);
27
+ });
28
+
29
+ it('dispatches most recent event in interval amplitude', async () => {
30
+ let count = 0;
31
+ const seq = [] as number[];
32
+ const div = document.createElement('div');
33
+ new ThrottleEvent('my-event', (e: CustomEvent) => {
34
+ seq.push(e.detail.seq);
35
+ count++;
36
+ }, 10).bindTo(div);
37
+ div.dispatchEvent(new CustomEvent('my-event', { detail: { seq: 1 } }));
38
+ div.dispatchEvent(new CustomEvent('my-event', { detail: { seq: 2 } }));
39
+ div.dispatchEvent(new CustomEvent('my-event', { detail: { seq: 3 } }));
40
+ await new Promise<void>(resolve => setTimeout(resolve, 15));
41
+ div.dispatchEvent(new CustomEvent('my-event', { detail: { seq: 4 } }));
42
+ div.dispatchEvent(new CustomEvent('my-event', { detail: { seq: 5 } }));
43
+ await new Promise<void>(resolve => setTimeout(resolve, 10));
44
+ expect(count).to.equal(3);
45
+ expect(seq).to.eql([1,3,5]);
46
+ });
47
+ });
@@ -0,0 +1,24 @@
1
+ /*
2
+ * This file is part of the TYPO3 CMS project.
3
+ *
4
+ * It is free software; you can redistribute it and/or modify it under
5
+ * the terms of the GNU General Public License, either version 2
6
+ * of the License, or any later version.
7
+ *
8
+ * For the full copyright and license information, please read the
9
+ * LICENSE.txt file that was distributed with this source code.
10
+ *
11
+ * The TYPO3 project - inspiring people to share!
12
+ */
13
+
14
+ import { selector } from '@typo3/core/literals.js';
15
+ import { expect } from '@open-wc/testing';
16
+ import type { } from 'mocha';
17
+
18
+ describe('@typo3/core/literals', (): void => {
19
+ it('escapes values in query selectors', (): void => {
20
+ const name = 'abc123"#_.,xyz';
21
+ const value = selector`#field[name="${name}"]`;
22
+ expect(value).to.equal('#field[name="abc123\\"\\#_\\.\\,xyz"]');
23
+ });
24
+ });
@@ -0,0 +1,50 @@
1
+ /*
2
+ * This file is part of the TYPO3 CMS project.
3
+ *
4
+ * It is free software; you can redistribute it and/or modify it under
5
+ * the terms of the GNU General Public License, either version 2
6
+ * of the License, or any later version.
7
+ *
8
+ * For the full copyright and license information, please read the
9
+ * LICENSE.txt file that was distributed with this source code.
10
+ *
11
+ * The TYPO3 project - inspiring people to share!
12
+ */
13
+
14
+ import SecurityUtility from '@typo3/core/security-utility.js';
15
+ import { expect } from '@open-wc/testing';
16
+ import type { } from 'mocha';
17
+
18
+ describe('@typo3/core/security-utility', (): void => {
19
+ it('generates random hex value', (): void => {
20
+ function* validLengthDataProvider(): any {
21
+ yield 1;
22
+ yield 20;
23
+ yield 39;
24
+ }
25
+ for (const validLength of validLengthDataProvider()) {
26
+ const randomHexValue = (new SecurityUtility()).getRandomHexValue(validLength);
27
+ expect(randomHexValue.length).to.equal(validLength);
28
+ }
29
+ });
30
+
31
+ it('throws SyntaxError on invalid length', (): void => {
32
+ function* invalidLengthDataProvider(): any {
33
+ yield 0;
34
+ yield -90;
35
+ yield 10.3; // length is "ceiled", 10.3 => 11, 10 != 11
36
+ }
37
+ for (const invalidLength of invalidLengthDataProvider()) {
38
+ expect(() => (new SecurityUtility()).getRandomHexValue(invalidLength)).to.throw(SyntaxError);
39
+ }
40
+ });
41
+
42
+ it('encodes HTML', (): void => {
43
+ expect((new SecurityUtility).encodeHtml('<>"\'&')).to.equal('&lt;&gt;&quot;&apos;&amp;');
44
+ });
45
+
46
+ it('removes HTML from string', (): void => {
47
+ expect((new SecurityUtility).stripHtml('<img src="" onerror="alert(\'1\')">oh noes')).to.equal('oh noes');
48
+ expect((new SecurityUtility).encodeHtml('<>"\'&')).to.equal('&lt;&gt;&quot;&apos;&amp;');
49
+ });
50
+ });
@@ -0,0 +1,9 @@
1
+ export type IfEquals<X, Y, A, B> =
2
+ (<T>() => T extends X ? 1 : 2) extends
3
+ (<T>() => T extends Y ? 1 : 2) ? A : B;
4
+
5
+ export type WritableKeysOf<T> = {
6
+ [P in keyof T]: IfEquals<{ [Q in P]: T[P] }, { -readonly [Q in P]: T[P] }, P, never>
7
+ }[keyof T];
8
+
9
+ export type WritablePart<T> = Pick<T, WritableKeysOf<T>>;
@@ -0,0 +1,136 @@
1
+ /*
2
+ * This file is part of the TYPO3 CMS project.
3
+ *
4
+ * It is free software; you can redistribute it and/or modify it under
5
+ * the terms of the GNU General Public License, either version 2
6
+ * of the License, or any later version.
7
+ *
8
+ * For the full copyright and license information, please read the
9
+ * LICENSE.txt file that was distributed with this source code.
10
+ *
11
+ * The TYPO3 project - inspiring people to share!
12
+ */
13
+
14
+ // @todo: offload import and registration of components into separated widgets in TYPO3 v13
15
+ import { Chart,
16
+ ArcElement,
17
+ LineElement,
18
+ BarElement,
19
+ PointElement,
20
+ BarController,
21
+ BubbleController,
22
+ DoughnutController,
23
+ LineController,
24
+ PieController,
25
+ PolarAreaController,
26
+ RadarController,
27
+ ScatterController,
28
+ CategoryScale,
29
+ LinearScale,
30
+ LogarithmicScale,
31
+ RadialLinearScale,
32
+ TimeScale,
33
+ TimeSeriesScale,
34
+ Decimation,
35
+ Filler,
36
+ Legend,
37
+ Title,
38
+ Tooltip,
39
+ SubTitle } from 'chart.js';
40
+ import RegularEvent from '@typo3/core/event/regular-event';
41
+ import { DashboardWidgetContentRenderedEvent } from './dashboard';
42
+
43
+ class ChartInitializer {
44
+ private readonly selector: string = '.dashboard-item';
45
+
46
+ constructor() {
47
+ this.initialize();
48
+ }
49
+
50
+ public initialize(): void {
51
+ // @todo: offload import and registration of components into separated widgets in TYPO3 v13
52
+ Chart.register(
53
+ ArcElement,
54
+ LineElement,
55
+ BarElement,
56
+ PointElement,
57
+ BarController,
58
+ BubbleController,
59
+ DoughnutController,
60
+ LineController,
61
+ PieController,
62
+ PolarAreaController,
63
+ RadarController,
64
+ ScatterController,
65
+ CategoryScale,
66
+ LinearScale,
67
+ LogarithmicScale,
68
+ RadialLinearScale,
69
+ TimeScale,
70
+ TimeSeriesScale,
71
+ Decimation,
72
+ Filler,
73
+ Legend,
74
+ Title,
75
+ Tooltip,
76
+ SubTitle
77
+ );
78
+
79
+ new RegularEvent(DashboardWidgetContentRenderedEvent.eventName, (e: DashboardWidgetContentRenderedEvent, htmlElement: HTMLElement): void => {
80
+ e.preventDefault();
81
+ const config: any = e.widget.eventdata;
82
+
83
+ if (undefined === config || undefined === config.graphConfig) {
84
+ return;
85
+ }
86
+
87
+ const _canvas: any = htmlElement.querySelector('canvas');
88
+ let context;
89
+
90
+ if (_canvas !== null) {
91
+ context = _canvas.getContext('2d');
92
+ }
93
+
94
+ if (undefined === context) {
95
+ return;
96
+ }
97
+
98
+ if (this.darkModeEnabled()) {
99
+ config.graphConfig.options.color = '#ccc';
100
+ config.graphConfig.options.borderColor = '#000';
101
+ Chart.defaults.borderColor = 'rgba(255,255,255,.1)';
102
+ Chart.defaults.color = '#ccc';
103
+ } else {
104
+ config.graphConfig.options.color = '#666';
105
+ config.graphConfig.options.borderColor = '#fff';
106
+ Chart.defaults.borderColor = 'rgba(0,0,0,.1)';
107
+ Chart.defaults.color = '#666';
108
+ }
109
+
110
+ const existingChart = Chart.getChart(context);
111
+ if (existingChart) {
112
+ existingChart.data = config.graphConfig.data;
113
+ existingChart.options = config.graphConfig.options;
114
+ existingChart.update();
115
+ return;
116
+ }
117
+
118
+ new Chart(context, config.graphConfig);
119
+ }).delegateTo(document, this.selector);
120
+ }
121
+
122
+ private darkModeEnabled(): boolean {
123
+ const target = document.querySelector(this.selector);
124
+ const computedStyle = window.getComputedStyle(target);
125
+ const colorScheme = computedStyle.colorScheme;
126
+ if (colorScheme === 'light only' || colorScheme === 'light') {
127
+ return false;
128
+ } else if (colorScheme === 'dark only' || colorScheme === 'dark') {
129
+ return true;
130
+ }
131
+
132
+ return window.matchMedia('(prefers-color-scheme: dark)').matches;
133
+ }
134
+ }
135
+
136
+ export default new ChartInitializer();