alchemy_cms 8.0.0.a → 8.0.0.c

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 (216) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -0
  3. data/app/assets/builds/alchemy/admin/page-select.css +1 -1
  4. data/app/assets/builds/alchemy/admin.css +1 -1
  5. data/app/assets/builds/alchemy/dark-theme.css +1 -0
  6. data/app/assets/builds/alchemy/light-theme.css +1 -0
  7. data/app/assets/builds/alchemy/theme.css +1 -0
  8. data/app/assets/builds/alchemy/welcome.css +1 -1
  9. data/app/assets/builds/tinymce/skins/content/alchemy/content.min.css +1 -1
  10. data/app/assets/builds/tinymce/skins/content/alchemy-dark/content.min.css +1 -0
  11. data/app/assets/builds/tinymce/skins/ui/alchemy/skin.min.css +1 -1
  12. data/app/assets/builds/tinymce/skins/ui/alchemy-dark/content.min.css +1 -0
  13. data/app/assets/builds/tinymce/skins/ui/alchemy-dark/skin.min.css +1 -0
  14. data/app/assets/images/alchemy/element_icons/layout-bottom-2-line.svg +1 -0
  15. data/app/assets/images/alchemy/icons-sprite.svg +1 -1
  16. data/app/components/alchemy/admin/element_select.rb +39 -0
  17. data/app/components/alchemy/admin/link_dialog/tabs.rb +1 -1
  18. data/app/components/alchemy/admin/locale_select.rb +38 -0
  19. data/app/components/alchemy/ingredients/datetime_view.rb +4 -2
  20. data/app/controllers/alchemy/admin/attachments_controller.rb +2 -0
  21. data/app/controllers/alchemy/admin/elements_controller.rb +2 -0
  22. data/app/controllers/alchemy/admin/pages_controller.rb +3 -1
  23. data/app/controllers/alchemy/admin/pictures_controller.rb +26 -34
  24. data/app/controllers/alchemy/admin/resources_controller.rb +1 -1
  25. data/app/controllers/alchemy/pages_controller.rb +19 -2
  26. data/app/controllers/concerns/alchemy/admin/resource_filter.rb +1 -0
  27. data/app/decorators/alchemy/ingredient_editor.rb +9 -1
  28. data/app/helpers/alchemy/admin/attachments_helper.rb +5 -5
  29. data/app/helpers/alchemy/admin/base_helper.rb +0 -7
  30. data/app/helpers/alchemy/admin/form_helper.rb +2 -1
  31. data/app/helpers/alchemy/pages_helper.rb +1 -1
  32. data/app/javascript/alchemy_admin/components/auto_submit.js +20 -0
  33. data/app/javascript/alchemy_admin/components/datepicker.js +8 -5
  34. data/app/javascript/alchemy_admin/components/element_editor/delete_element_button.js +3 -2
  35. data/app/javascript/alchemy_admin/components/element_editor.js +25 -15
  36. data/app/javascript/alchemy_admin/components/element_select.js +43 -0
  37. data/app/javascript/alchemy_admin/components/index.js +5 -0
  38. data/app/javascript/alchemy_admin/components/link_buttons.js +6 -2
  39. data/app/javascript/alchemy_admin/components/remote_select.js +5 -1
  40. data/app/javascript/alchemy_admin/components/tinymce.js +93 -16
  41. data/app/javascript/alchemy_admin/dialog.js +1 -1
  42. data/app/javascript/alchemy_admin/file_editors.js +1 -1
  43. data/app/javascript/alchemy_admin/image_loader.js +4 -2
  44. data/app/javascript/alchemy_admin/picture_editors.js +7 -4
  45. data/app/javascript/alchemy_admin/picture_selector.js +4 -4
  46. data/app/jobs/alchemy/delete_picture_job.rb +12 -0
  47. data/app/models/alchemy/attachment.rb +2 -9
  48. data/app/models/alchemy/element.rb +1 -0
  49. data/app/models/alchemy/element_definition.rb +31 -0
  50. data/app/models/alchemy/ingredient.rb +1 -1
  51. data/app/models/alchemy/ingredients/boolean.rb +2 -1
  52. data/app/models/alchemy/language.rb +2 -7
  53. data/app/models/alchemy/page/page_naming.rb +4 -11
  54. data/app/models/alchemy/page/page_natures.rb +16 -11
  55. data/app/models/alchemy/page/publisher.rb +1 -1
  56. data/app/models/alchemy/page.rb +1 -6
  57. data/app/models/alchemy/page_definition.rb +1 -1
  58. data/app/models/alchemy/picture.rb +6 -17
  59. data/app/models/alchemy/resource.rb +15 -2
  60. data/app/models/alchemy/site/layout.rb +1 -0
  61. data/app/models/alchemy/site.rb +1 -6
  62. data/app/models/alchemy/storage_adapter/dragonfly/picture_url.rb +7 -2
  63. data/app/models/alchemy/storage_adapter/dragonfly.rb +24 -2
  64. data/app/models/concerns/alchemy/relatable_resource.rb +28 -0
  65. data/app/stylesheets/alchemy/_custom-properties.scss +162 -0
  66. data/app/stylesheets/alchemy/_mixins.scss +12 -24
  67. data/app/stylesheets/alchemy/_themes.scss +540 -0
  68. data/app/stylesheets/alchemy/admin/archive.scss +28 -8
  69. data/app/stylesheets/alchemy/admin/attachments.scss +10 -33
  70. data/app/stylesheets/alchemy/admin/base.scss +4 -1
  71. data/app/stylesheets/alchemy/admin/buttons.scss +7 -32
  72. data/app/stylesheets/alchemy/admin/dashboard.scss +13 -0
  73. data/app/stylesheets/alchemy/admin/dialogs.scss +17 -7
  74. data/app/stylesheets/alchemy/admin/element-select.scss +11 -0
  75. data/app/stylesheets/alchemy/admin/elements.scss +95 -34
  76. data/app/stylesheets/alchemy/admin/filters.scss +8 -9
  77. data/app/stylesheets/alchemy/admin/flatpickr.scss +12 -27
  78. data/app/stylesheets/alchemy/admin/form_fields.scss +0 -15
  79. data/app/stylesheets/alchemy/admin/forms.scss +3 -8
  80. data/app/stylesheets/alchemy/admin/frame.scss +5 -7
  81. data/app/stylesheets/alchemy/admin/icons.scss +0 -9
  82. data/app/stylesheets/alchemy/admin/image_library.scss +13 -55
  83. data/app/stylesheets/alchemy/admin/navigation.scss +1 -11
  84. data/app/stylesheets/alchemy/admin/node-select.scss +1 -10
  85. data/app/stylesheets/alchemy/admin/nodes.scss +6 -2
  86. data/app/stylesheets/alchemy/admin/notices.scss +5 -4
  87. data/app/stylesheets/alchemy/admin/page-select.scss +16 -0
  88. data/app/stylesheets/alchemy/admin/pagination.scss +1 -8
  89. data/app/stylesheets/alchemy/admin/preview_window.scss +12 -1
  90. data/app/stylesheets/alchemy/admin/resource_info.scss +106 -3
  91. data/app/stylesheets/alchemy/admin/search.scss +1 -1
  92. data/app/stylesheets/alchemy/admin/selects.scss +58 -31
  93. data/app/stylesheets/alchemy/admin/shoelace.scss +32 -62
  94. data/app/stylesheets/alchemy/admin/sitemap.scss +7 -18
  95. data/app/stylesheets/alchemy/admin/tables.scss +3 -3
  96. data/app/stylesheets/alchemy/admin/tags.scss +18 -35
  97. data/app/stylesheets/alchemy/admin/toolbar.scss +0 -6
  98. data/app/stylesheets/alchemy/admin/typography.scss +2 -5
  99. data/app/stylesheets/alchemy/admin.scss +1 -1
  100. data/app/stylesheets/alchemy/dark-theme.scss +5 -0
  101. data/app/stylesheets/alchemy/light-theme.scss +6 -0
  102. data/app/stylesheets/alchemy/theme.scss +13 -0
  103. data/app/stylesheets/tinymce/skins/content/alchemy/content.scss +8 -8
  104. data/app/stylesheets/tinymce/skins/content/alchemy-dark/content.scss +70 -0
  105. data/app/stylesheets/tinymce/skins/ui/alchemy/skin.scss +28 -43
  106. data/app/stylesheets/tinymce/skins/ui/alchemy-dark/content.scss +1 -0
  107. data/app/stylesheets/tinymce/skins/ui/alchemy-dark/skin.scss +3784 -0
  108. data/app/views/alchemy/admin/attachments/_files_list.html.erb +20 -10
  109. data/app/views/alchemy/admin/attachments/assign.js.erb +4 -3
  110. data/app/views/alchemy/admin/attachments/show.html.erb +55 -43
  111. data/app/views/alchemy/admin/crop.html.erb +1 -1
  112. data/app/views/alchemy/admin/dashboard/index.html.erb +1 -1
  113. data/app/views/alchemy/admin/dashboard/info.html.erb +36 -6
  114. data/app/views/alchemy/admin/elements/_form.html.erb +9 -9
  115. data/app/views/alchemy/admin/elements/_header.html.erb +12 -10
  116. data/app/views/alchemy/admin/ingredients/_picture_fields.html.erb +1 -1
  117. data/app/views/alchemy/admin/nodes/_form.html.erb +5 -1
  118. data/app/views/alchemy/admin/pages/info.html.erb +1 -1
  119. data/app/views/alchemy/admin/partials/_search_form.html.erb +1 -0
  120. data/app/views/alchemy/admin/pictures/_archive.html.erb +13 -23
  121. data/app/views/alchemy/admin/pictures/_archive_overlay.html.erb +1 -6
  122. data/app/views/alchemy/admin/pictures/_form.html.erb +10 -5
  123. data/app/views/alchemy/admin/pictures/_infos.html.erb +21 -52
  124. data/app/views/alchemy/admin/pictures/_library_sidebar.html.erb +7 -0
  125. data/app/views/alchemy/admin/pictures/_picture.html.erb +15 -16
  126. data/app/views/alchemy/admin/pictures/_picture_to_assign.html.erb +20 -16
  127. data/app/views/alchemy/admin/pictures/_sorting_select.html.erb +13 -0
  128. data/app/views/alchemy/admin/pictures/_tag_list.html.erb +1 -1
  129. data/app/views/alchemy/admin/pictures/edit_multiple.html.erb +1 -6
  130. data/app/views/alchemy/admin/pictures/index.html.erb +3 -12
  131. data/app/views/alchemy/admin/pictures/show.html.erb +17 -14
  132. data/app/views/alchemy/admin/pictures/update.turbo_stream.erb +1 -1
  133. data/app/views/alchemy/admin/resources/_filter_bar.html.erb +5 -15
  134. data/app/views/alchemy/admin/resources/_resource_usage_info.html.erb +36 -0
  135. data/app/views/alchemy/admin/styleguide/index.html.erb +118 -66
  136. data/app/views/alchemy/admin/uploader/_button.html.erb +1 -1
  137. data/app/views/alchemy/base/error_notice.html.erb +1 -1
  138. data/app/views/alchemy/ingredients/_page_editor.html.erb +0 -1
  139. data/app/views/alchemy/ingredients/_richtext_editor.html.erb +0 -1
  140. data/app/views/alchemy/ingredients/_select_editor.html.erb +1 -2
  141. data/app/views/layouts/alchemy/admin.html.erb +25 -23
  142. data/config/locales/alchemy.en.yml +26 -8
  143. data/db/migrate/20250905140323_add_created_at_index_to_pictures_and_attachments.rb +14 -0
  144. data/lib/alchemy/configuration/base_option.rb +18 -5
  145. data/lib/alchemy/configuration/boolean_option.rb +2 -5
  146. data/lib/alchemy/configuration/collection_option.rb +69 -0
  147. data/lib/alchemy/configuration/configuration_option.rb +35 -0
  148. data/lib/alchemy/configuration/pathname_option.rb +12 -0
  149. data/lib/alchemy/configuration.rb +44 -6
  150. data/lib/alchemy/configurations/format_matchers.rb +1 -1
  151. data/lib/alchemy/configurations/importmap.rb +11 -0
  152. data/lib/alchemy/configurations/mailer.rb +2 -2
  153. data/lib/alchemy/configurations/main.rb +148 -3
  154. data/lib/alchemy/configurations/page_cache.rb +19 -0
  155. data/lib/alchemy/configurations/uploader.rb +2 -2
  156. data/lib/alchemy/deprecation.rb +1 -1
  157. data/lib/alchemy/engine.rb +43 -21
  158. data/lib/alchemy/install/tasks.rb +0 -12
  159. data/lib/alchemy/name_conversions.rb +6 -0
  160. data/lib/alchemy/tasks/tidy.rb +18 -0
  161. data/lib/alchemy/test_support/config_stubbing.rb +13 -4
  162. data/lib/alchemy/test_support/factories/language_factory.rb +8 -4
  163. data/lib/alchemy/test_support/factories/page_factory.rb +1 -0
  164. data/lib/alchemy/test_support/factories/picture_factory.rb +1 -0
  165. data/lib/alchemy/test_support/relatable_resource_examples.rb +58 -0
  166. data/lib/alchemy/tinymce.rb +0 -1
  167. data/lib/alchemy/version.rb +1 -1
  168. data/lib/alchemy.rb +18 -171
  169. data/lib/generators/alchemy/install/install_generator.rb +21 -10
  170. data/lib/generators/alchemy/install/templates/alchemy.rb.tt +88 -13
  171. data/lib/tasks/alchemy/assets.rake +1 -1
  172. data/lib/tasks/alchemy/tidy.rake +6 -0
  173. data/lib/tasks/alchemy/usage.rake +2 -0
  174. data/vendor/assets/stylesheets/tinymce/skins/content/dark/content.min.css +1 -0
  175. data/vendor/assets/stylesheets/tinymce/skins/content/default/content.min.css +1 -0
  176. data/vendor/assets/stylesheets/tinymce/skins/ui/oxide/skin.min.css +1 -0
  177. data/vendor/assets/stylesheets/tinymce/skins/ui/oxide-dark/content.min.css +1 -0
  178. data/vendor/assets/stylesheets/tinymce/skins/ui/oxide-dark/skin.min.css +1 -0
  179. data/vendor/javascript/clipboard.min.js +1 -1
  180. data/vendor/javascript/cropperjs.min.js +1 -1
  181. data/vendor/javascript/handlebars.min.js +3 -3
  182. data/vendor/javascript/jquery.min.js +1 -1
  183. data/vendor/javascript/select2.min.js +3 -3
  184. data/vendor/javascript/shoelace.min.js +92 -76
  185. data/vendor/javascript/sortable.min.js +2 -2
  186. data/vendor/javascript/tinymce.min.js +1 -1
  187. data/vendor/javascript/ungap-custom-elements.min.js +2 -2
  188. metadata +51 -36
  189. data/CHANGELOG.md +0 -2100
  190. data/CODE_OF_CONDUCT.md +0 -13
  191. data/CONTRIBUTING.md +0 -73
  192. data/Gemfile +0 -78
  193. data/Rakefile +0 -102
  194. data/SECURITY.md +0 -13
  195. data/alchemy_cms.gemspec +0 -97
  196. data/app/assets/builds/alchemy/custom-properties.css +0 -1
  197. data/app/helpers/alchemy/admin/elements_helper.rb +0 -25
  198. data/app/stylesheets/alchemy/custom-properties.css +0 -244
  199. data/bin/importmap +0 -4
  200. data/bin/rails +0 -9
  201. data/bin/rspec +0 -3
  202. data/bin/setup +0 -30
  203. data/bin/start +0 -17
  204. data/bun.lockb +0 -0
  205. data/bundles/remixicon.mjs +0 -153
  206. data/bundles/shoelace.js +0 -12
  207. data/bundles/tinymce.js +0 -22
  208. data/eslint.config.js +0 -18
  209. data/lib/alchemy/configuration/class_set_option.rb +0 -46
  210. data/lib/alchemy/configuration/integer_list_option.rb +0 -13
  211. data/lib/alchemy/configuration/list_option.rb +0 -22
  212. data/lib/alchemy/configuration/string_list_option.rb +0 -13
  213. data/lib/alchemy/upgrader/.keep +0 -0
  214. data/lib/alchemy/upgrader/tasks/.keep +0 -0
  215. data/rollup.config.mjs +0 -108
  216. data/vitest.config.js +0 -21
@@ -1,3 +1,3 @@
1
1
  /*! (c) Andrea Giammarchi @webreflection ISC */
2
- !function(){var e=function(e,t){var n=function(e){for(var t=0,n=e.length;t<n;t++)r(e[t]);},r=function(e){var t=e.target,n=e.attributeName,r=e.oldValue;t.attributeChangedCallback(n,r,t.getAttribute(n));};return function(o,a){var l=o.constructor.observedAttributes;return l&&e(a).then((function(){new t(n).observe(o,{attributes:!0,attributeOldValue:!0,attributeFilter:l});for(var e=0,a=l.length;e<a;e++)o.hasAttribute(l[e])&&r({target:o,attributeName:l[e],oldValue:null});})),o}};function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function n(e,n){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,n){if(e){if("string"==typeof e)return t(e,n);var r=Object.prototype.toString.call(e).slice(8,-1);return "Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?t(e,n):void 0}}(e))||n){r&&(e=r);var o=0,a=function(){};return {s:a,n:function(){return o>=e.length?{done:!0}:{done:!1,value:e[o++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var l,i=!0,c=!1;return {s:function(){r=r.call(e);},n:function(){var e=r.next();return i=e.done,e},e:function(e){c=!0,l=e;},f:function(){try{i||null==r.return||r.return();}finally{if(c)throw l}}}}
3
- /*! (c) Andrea Giammarchi - ISC */var r=!0,o=!1,a="querySelectorAll",l="querySelectorAll",i=self,c=i.document,u=i.Element,s=i.MutationObserver,f=i.Set,d=i.WeakMap,h=function(e){return l in e},v=[].filter,p=function(e){var t=new d,i=function(n,r){var o;if(r)for(var a,l=function(e){return e.matches||e.webkitMatchesSelector||e.msMatchesSelector}(n),i=0,c=y.length;i<c;i++)l.call(n,a=y[i])&&(t.has(n)||t.set(n,new f),(o=t.get(n)).has(a)||(o.add(a),e.handle(n,r,a)));else t.has(n)&&(o=t.get(n),t.delete(n),o.forEach((function(t){e.handle(n,r,t);})));},p=function(e){for(var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=0,r=e.length;n<r;n++)i(e[n],t);},y=e.query,g=e.root||c,m=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document,l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:MutationObserver,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:["*"],c=function t(o,l,i,c,u,s){var f,d=n(o);try{for(d.s();!(f=d.n()).done;){var h=f.value;(s||a in h)&&(u?i.has(h)||(i.add(h),c.delete(h),e(h,u)):c.has(h)||(c.add(h),i.delete(h),e(h,u)),s||t(h[a](l),l,i,c,u,r));}}catch(e){d.e(e);}finally{d.f();}},u=new l((function(e){if(i.length){var t,a=i.join(","),l=new Set,u=new Set,s=n(e);try{for(s.s();!(t=s.n()).done;){var f=t.value,d=f.addedNodes,h=f.removedNodes;c(h,a,l,u,o,o),c(d,a,l,u,r,o);}}catch(e){s.e(e);}finally{s.f();}}})),s=u.observe;return (u.observe=function(e){return s.call(u,e,{subtree:r,childList:r})})(t),u}(i,g,s,y),w=u.prototype.attachShadow;return w&&(u.prototype.attachShadow=function(e){var t=w.call(this,e);return m.observe(t),t}),y.length&&p(g[l](y)),{drop:function(e){for(var n=0,r=e.length;n<r;n++)t.delete(e[n]);},flush:function(){for(var e=m.takeRecords(),t=0,n=e.length;t<n;t++)p(v.call(e[t].removedNodes,h),!1),p(v.call(e[t].addedNodes,h),!0);},observer:m,parse:p}},y=self,g=y.document,m=y.Map,w=y.MutationObserver,b=y.Object,E=y.Set,S=y.WeakMap,A=y.Element,M=y.HTMLElement,O=y.Node,N=y.Error,C=y.TypeError,T=y.Reflect,q=b.defineProperty,D=b.keys,I=b.getOwnPropertyNames,P=b.setPrototypeOf,k=!self.customElements,L=function(e){for(var t=D(e),n=[],r=new E,o=t.length,a=0;a<o;a++){n[a]=e[t[a]];try{delete e[t[a]];}catch(e){r.add(a);}}return function(){for(var a=0;a<o;a++)r.has(a)||(e[t[a]]=n[a]);}};if(k){var x=function(){var e=this.constructor;if(!$.has(e))throw new C("Illegal constructor");var t=$.get(e);if(W)return F(W,t);var n=H.call(g,t);return F(P(n,e.prototype),t)},H=g.createElement,$=new m,_=new m,j=new m,R=new m,V=[],U=p({query:V,handle:function(e,t,n){var r=j.get(n);if(t&&!r.isPrototypeOf(e)){var o=L(e);W=P(e,r);try{new r.constructor;}finally{W=null,o();}}var a="".concat(t?"":"dis","connectedCallback");a in r&&e[a]();}}).parse,W=null,B=function(e){if(!_.has(e)){var t,n=new Promise((function(e){t=e;}));_.set(e,{$:n,_:t});}return _.get(e).$},F=e(B,w);self.customElements={define:function(e,t){if(R.has(e))throw new N('the name "'.concat(e,'" has already been used with this registry'));$.set(t,e),j.set(e,t.prototype),R.set(e,t),V.push(e),B(e).then((function(){U(g.querySelectorAll(e));})),_.get(e)._(t);},get:function(e){return R.get(e)},whenDefined:B},q(x.prototype=M.prototype,"constructor",{value:x}),self.HTMLElement=x,g.createElement=function(e,t){var n=t&&t.is,r=n?R.get(n):R.get(e);return r?new r:H.call(g,e)},"isConnected"in O.prototype||q(O.prototype,"isConnected",{configurable:!0,get:function(){return !(this.ownerDocument.compareDocumentPosition(this)&this.DOCUMENT_POSITION_DISCONNECTED)}});}else if(k=!self.customElements.get("extends-br"))try{var z=function e(){return self.Reflect.construct(HTMLBRElement,[],e)};z.prototype=HTMLLIElement.prototype;var G="extends-br";self.customElements.define("extends-br",z,{extends:"br"}),k=g.createElement("br",{is:G}).outerHTML.indexOf(G)<0;var J=self.customElements,K=J.get,Q=J.whenDefined;self.customElements.whenDefined=function(e){var t=this;return Q.call(this,e).then((function(n){return n||K.call(t,e)}))};}catch(e){}if(k){var X=function(e){var t=ae.get(e);ve(t.querySelectorAll(this),e.isConnected);},Y=self.customElements,Z=g.createElement,ee=Y.define,te=Y.get,ne=Y.upgrade,re=T||{construct:function(e){return e.call(this)}},oe=re.construct,ae=new S,le=new E,ie=new m,ce=new m,ue=new m,se=new m,fe=[],de=[],he=function(e){return se.get(e)||te.call(Y,e)},ve=p({query:de,handle:function(e,t,n){var r=ue.get(n);if(t&&!r.isPrototypeOf(e)){var o=L(e);we=P(e,r);try{new r.constructor;}finally{we=null,o();}}var a="".concat(t?"":"dis","connectedCallback");a in r&&e[a]();}}).parse,pe=p({query:fe,handle:function(e,t){ae.has(e)&&(t?le.add(e):le.delete(e),de.length&&X.call(de,e));}}).parse,ye=A.prototype.attachShadow;ye&&(A.prototype.attachShadow=function(e){var t=ye.call(this,e);return ae.set(this,t),t});var ge=function(e){if(!ce.has(e)){var t,n=new Promise((function(e){t=e;}));ce.set(e,{$:n,_:t});}return ce.get(e).$},me=e(ge,w),we=null;I(self).filter((function(e){return /^HTML.*Element$/.test(e)})).forEach((function(e){var t=self[e];function n(){var e=this.constructor;if(!ie.has(e))throw new C("Illegal constructor");var n=ie.get(e),r=n.is,o=n.tag;if(r){if(we)return me(we,r);var a=Z.call(g,o);return a.setAttribute("is",r),me(P(a,e.prototype),r)}return oe.call(this,t,[],e)}q(n.prototype=t.prototype,"constructor",{value:n}),q(self,e,{value:n});})),g.createElement=function(e,t){var n=t&&t.is;if(n){var r=se.get(n);if(r&&ie.get(r).tag===e)return new r}var o=Z.call(g,e);return n&&o.setAttribute("is",n),o},Y.get=he,Y.whenDefined=ge,Y.upgrade=function(e){var t=e.getAttribute("is");if(t){var n=se.get(t);if(n)return void me(P(e,n.prototype),t)}ne.call(Y,e);},Y.define=function(e,t,n){if(he(e))throw new N("'".concat(e,"' has already been defined as a custom element"));var r,o=n&&n.extends;ie.set(t,o?{is:e,tag:o}:{is:"",tag:e}),o?(r="".concat(o,'[is="').concat(e,'"]'),ue.set(r,t.prototype),se.set(e,t),de.push(r)):(ee.apply(Y,arguments),fe.push(r=e)),ge(e).then((function(){o?(ve(g.querySelectorAll(r)),le.forEach(X,[r])):pe(g.querySelectorAll(r));})),ce.get(e)._(t);};}}();
2
+ !function(){var e=function(e,t){var n=function(e){for(var t=0,n=e.length;t<n;t++)r(e[t]);},r=function(e){var t=e.target,n=e.attributeName,r=e.oldValue;t.attributeChangedCallback(n,r,t.getAttribute(n));};return function(o,a){var l=o.constructor.observedAttributes;return l&&e(a).then((function(){new t(n).observe(o,{attributes:true,attributeOldValue:true,attributeFilter:l});for(var e=0,a=l.length;e<a;e++)o.hasAttribute(l[e])&&r({target:o,attributeName:l[e],oldValue:null});})),o}};function t(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function n(e,n){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,n){if(e){if("string"==typeof e)return t(e,n);var r=Object.prototype.toString.call(e).slice(8,-1);return "Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?t(e,n):void 0}}(e))||n){r&&(e=r);var o=0,a=function(){};return {s:a,n:function(){return o>=e.length?{done:true}:{done:false,value:e[o++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var l,i=true,c=false;return {s:function(){r=r.call(e);},n:function(){var e=r.next();return i=e.done,e},e:function(e){c=true,l=e;},f:function(){try{i||null==r.return||r.return();}finally{if(c)throw l}}}}
3
+ /*! (c) Andrea Giammarchi - ISC */var r=true,o=false,a="querySelectorAll",l="querySelectorAll",i=self,c=i.document,u=i.Element,s=i.MutationObserver,f=i.Set,d=i.WeakMap,h=function(e){return l in e},v=[].filter,p=function(e){var t=new d,i=function(n,r){var o;if(r)for(var a,l=function(e){return e.matches||e.webkitMatchesSelector||e.msMatchesSelector}(n),i=0,c=y.length;i<c;i++)l.call(n,a=y[i])&&(t.has(n)||t.set(n,new f),(o=t.get(n)).has(a)||(o.add(a),e.handle(n,r,a)));else t.has(n)&&(o=t.get(n),t.delete(n),o.forEach((function(t){e.handle(n,r,t);})));},p=function(e){for(var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=0,r=e.length;n<r;n++)i(e[n],t);},y=e.query,g=e.root||c,m=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document,l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:MutationObserver,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:["*"],c=function t(o,l,i,c,u,s){var f,d=n(o);try{for(d.s();!(f=d.n()).done;){var h=f.value;(s||a in h)&&(u?i.has(h)||(i.add(h),c.delete(h),e(h,u)):c.has(h)||(c.add(h),i.delete(h),e(h,u)),s||t(h[a](l),l,i,c,u,r));}}catch(e){d.e(e);}finally{d.f();}},u=new l((function(e){if(i.length){var t,a=i.join(","),l=new Set,u=new Set,s=n(e);try{for(s.s();!(t=s.n()).done;){var f=t.value,d=f.addedNodes,h=f.removedNodes;c(h,a,l,u,o,o),c(d,a,l,u,r,o);}}catch(e){s.e(e);}finally{s.f();}}})),s=u.observe;return (u.observe=function(e){return s.call(u,e,{subtree:r,childList:r})})(t),u}(i,g,s,y),w=u.prototype.attachShadow;return w&&(u.prototype.attachShadow=function(e){var t=w.call(this,e);return m.observe(t),t}),y.length&&p(g[l](y)),{drop:function(e){for(var n=0,r=e.length;n<r;n++)t.delete(e[n]);},flush:function(){for(var e=m.takeRecords(),t=0,n=e.length;t<n;t++)p(v.call(e[t].removedNodes,h),false),p(v.call(e[t].addedNodes,h),true);},observer:m,parse:p}},y=self,g=y.document,m=y.Map,w=y.MutationObserver,b=y.Object,E=y.Set,S=y.WeakMap,A=y.Element,M=y.HTMLElement,O=y.Node,N=y.Error,C=y.TypeError,T=y.Reflect,q=b.defineProperty,D=b.keys,I=b.getOwnPropertyNames,P=b.setPrototypeOf,k=!self.customElements,L=function(e){for(var t=D(e),n=[],r=new E,o=t.length,a=0;a<o;a++){n[a]=e[t[a]];try{delete e[t[a]];}catch(e){r.add(a);}}return function(){for(var a=0;a<o;a++)r.has(a)||(e[t[a]]=n[a]);}};if(k){var x=function(){var e=this.constructor;if(!$.has(e))throw new C("Illegal constructor");var t=$.get(e);if(W)return F(W,t);var n=H.call(g,t);return F(P(n,e.prototype),t)},H=g.createElement,$=new m,_=new m,j=new m,R=new m,V=[],U=p({query:V,handle:function(e,t,n){var r=j.get(n);if(t&&!r.isPrototypeOf(e)){var o=L(e);W=P(e,r);try{new r.constructor;}finally{W=null,o();}}var a="".concat(t?"":"dis","connectedCallback");a in r&&e[a]();}}).parse,W=null,B=function(e){if(!_.has(e)){var t,n=new Promise((function(e){t=e;}));_.set(e,{$:n,_:t});}return _.get(e).$},F=e(B,w);self.customElements={define:function(e,t){if(R.has(e))throw new N('the name "'.concat(e,'" has already been used with this registry'));$.set(t,e),j.set(e,t.prototype),R.set(e,t),V.push(e),B(e).then((function(){U(g.querySelectorAll(e));})),_.get(e)._(t);},get:function(e){return R.get(e)},whenDefined:B},q(x.prototype=M.prototype,"constructor",{value:x}),self.HTMLElement=x,g.createElement=function(e,t){var n=t&&t.is,r=n?R.get(n):R.get(e);return r?new r:H.call(g,e)},"isConnected"in O.prototype||q(O.prototype,"isConnected",{configurable:true,get:function(){return !(this.ownerDocument.compareDocumentPosition(this)&this.DOCUMENT_POSITION_DISCONNECTED)}});}else if(k=!self.customElements.get("extends-br"))try{var z=function e(){return self.Reflect.construct(HTMLBRElement,[],e)};z.prototype=HTMLLIElement.prototype;var G="extends-br";self.customElements.define("extends-br",z,{extends:"br"}),k=g.createElement("br",{is:G}).outerHTML.indexOf(G)<0;var J=self.customElements,K=J.get,Q=J.whenDefined;self.customElements.whenDefined=function(e){var t=this;return Q.call(this,e).then((function(n){return n||K.call(t,e)}))};}catch(e){}if(k){var X=function(e){var t=ae.get(e);ve(t.querySelectorAll(this),e.isConnected);},Y=self.customElements,Z=g.createElement,ee=Y.define,te=Y.get,ne=Y.upgrade,re=T||{construct:function(e){return e.call(this)}},oe=re.construct,ae=new S,le=new E,ie=new m,ce=new m,ue=new m,se=new m,fe=[],de=[],he=function(e){return se.get(e)||te.call(Y,e)},ve=p({query:de,handle:function(e,t,n){var r=ue.get(n);if(t&&!r.isPrototypeOf(e)){var o=L(e);we=P(e,r);try{new r.constructor;}finally{we=null,o();}}var a="".concat(t?"":"dis","connectedCallback");a in r&&e[a]();}}).parse,pe=p({query:fe,handle:function(e,t){ae.has(e)&&(t?le.add(e):le.delete(e),de.length&&X.call(de,e));}}).parse,ye=A.prototype.attachShadow;ye&&(A.prototype.attachShadow=function(e){var t=ye.call(this,e);return ae.set(this,t),t});var ge=function(e){if(!ce.has(e)){var t,n=new Promise((function(e){t=e;}));ce.set(e,{$:n,_:t});}return ce.get(e).$},me=e(ge,w),we=null;I(self).filter((function(e){return /^HTML.*Element$/.test(e)})).forEach((function(e){var t=self[e];function n(){var e=this.constructor;if(!ie.has(e))throw new C("Illegal constructor");var n=ie.get(e),r=n.is,o=n.tag;if(r){if(we)return me(we,r);var a=Z.call(g,o);return a.setAttribute("is",r),me(P(a,e.prototype),r)}return oe.call(this,t,[],e)}q(n.prototype=t.prototype,"constructor",{value:n}),q(self,e,{value:n});})),g.createElement=function(e,t){var n=t&&t.is;if(n){var r=se.get(n);if(r&&ie.get(r).tag===e)return new r}var o=Z.call(g,e);return n&&o.setAttribute("is",n),o},Y.get=he,Y.whenDefined=ge,Y.upgrade=function(e){var t=e.getAttribute("is");if(t){var n=se.get(t);if(n)return void me(P(e,n.prototype),t)}ne.call(Y,e);},Y.define=function(e,t,n){if(he(e))throw new N("'".concat(e,"' has already been defined as a custom element"));var r,o=n&&n.extends;ie.set(t,o?{is:e,tag:o}:{is:"",tag:e}),o?(r="".concat(o,'[is="').concat(e,'"]'),ue.set(r,t.prototype),se.set(e,t),de.push(r)):(ee.apply(Y,arguments),fe.push(r=e)),ge(e).then((function(){o?(ve(g.querySelectorAll(r)),le.forEach(X,[r])):pe(g.querySelectorAll(r));})),ce.get(e)._(t);};}}();
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alchemy_cms
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.0.0.a
4
+ version: 8.0.0.c
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thomas von Deyen
@@ -436,16 +436,22 @@ dependencies:
436
436
  name: view_component
437
437
  requirement: !ruby/object:Gem::Requirement
438
438
  requirements:
439
- - - "~>"
439
+ - - ">="
440
440
  - !ruby/object:Gem::Version
441
- version: '3.0'
441
+ version: '3'
442
+ - - "<"
443
+ - !ruby/object:Gem::Version
444
+ version: '5'
442
445
  type: :runtime
443
446
  prerelease: false
444
447
  version_requirements: !ruby/object:Gem::Requirement
445
448
  requirements:
446
- - - "~>"
449
+ - - ">="
447
450
  - !ruby/object:Gem::Version
448
- version: '3.0'
451
+ version: '3'
452
+ - - "<"
453
+ - !ruby/object:Gem::Version
454
+ version: '5'
449
455
  - !ruby/object:Gem::Dependency
450
456
  name: capybara
451
457
  requirement: !ruby/object:Gem::Requirement
@@ -508,14 +514,14 @@ dependencies:
508
514
  requirements:
509
515
  - - "~>"
510
516
  - !ruby/object:Gem::Version
511
- version: '6.0'
517
+ version: '7.0'
512
518
  type: :development
513
519
  prerelease: false
514
520
  version_requirements: !ruby/object:Gem::Requirement
515
521
  requirements:
516
522
  - - "~>"
517
523
  - !ruby/object:Gem::Version
518
- version: '6.0'
524
+ version: '7.0'
519
525
  - !ruby/object:Gem::Dependency
520
526
  name: rails-controller-testing
521
527
  requirement: !ruby/object:Gem::Requirement
@@ -635,33 +641,33 @@ executables: []
635
641
  extensions: []
636
642
  extra_rdoc_files: []
637
643
  files:
638
- - CHANGELOG.md
639
- - CODE_OF_CONDUCT.md
640
- - CONTRIBUTING.md
641
- - Gemfile
642
644
  - LICENSE
643
645
  - README.md
644
- - Rakefile
645
- - SECURITY.md
646
- - alchemy_cms.gemspec
647
646
  - app/assets/builds/alchemy/admin.css
648
647
  - app/assets/builds/alchemy/admin/page-select.css
649
648
  - app/assets/builds/alchemy/admin/print.css
650
- - app/assets/builds/alchemy/custom-properties.css
649
+ - app/assets/builds/alchemy/dark-theme.css
650
+ - app/assets/builds/alchemy/light-theme.css
651
651
  - app/assets/builds/alchemy/preview.min.js
652
+ - app/assets/builds/alchemy/theme.css
652
653
  - app/assets/builds/alchemy/welcome.css
654
+ - app/assets/builds/tinymce/skins/content/alchemy-dark/content.min.css
653
655
  - app/assets/builds/tinymce/skins/content/alchemy/content.min.css
656
+ - app/assets/builds/tinymce/skins/ui/alchemy-dark/content.min.css
657
+ - app/assets/builds/tinymce/skins/ui/alchemy-dark/skin.min.css
654
658
  - app/assets/builds/tinymce/skins/ui/alchemy/content.min.css
655
659
  - app/assets/builds/tinymce/skins/ui/alchemy/skin.min.css
656
660
  - app/assets/config/alchemy_manifest.js
657
661
  - app/assets/images/alchemy/alchemy-logo.png
658
662
  - app/assets/images/alchemy/alchemy-logo.svg
663
+ - app/assets/images/alchemy/element_icons/layout-bottom-2-line.svg
659
664
  - app/assets/images/alchemy/favicon.ico
660
665
  - app/assets/images/alchemy/icon-white.svg
661
666
  - app/assets/images/alchemy/icon.svg
662
667
  - app/assets/images/alchemy/icons-sprite.svg
663
668
  - app/assets/images/alchemy/missing-image.svg
664
669
  - app/components/alchemy/admin/attachment_select.rb
670
+ - app/components/alchemy/admin/element_select.rb
665
671
  - app/components/alchemy/admin/icon.rb
666
672
  - app/components/alchemy/admin/link_dialog/anchor_tab.rb
667
673
  - app/components/alchemy/admin/link_dialog/base_tab.rb
@@ -670,6 +676,7 @@ files:
670
676
  - app/components/alchemy/admin/link_dialog/internal_tab.rb
671
677
  - app/components/alchemy/admin/link_dialog/tabs.rb
672
678
  - app/components/alchemy/admin/list_filter.rb
679
+ - app/components/alchemy/admin/locale_select.rb
673
680
  - app/components/alchemy/admin/message.rb
674
681
  - app/components/alchemy/admin/node_select.rb
675
682
  - app/components/alchemy/admin/page_select.rb
@@ -739,7 +746,6 @@ files:
739
746
  - app/decorators/alchemy/ingredient_editor.rb
740
747
  - app/helpers/alchemy/admin/attachments_helper.rb
741
748
  - app/helpers/alchemy/admin/base_helper.rb
742
- - app/helpers/alchemy/admin/elements_helper.rb
743
749
  - app/helpers/alchemy/admin/form_helper.rb
744
750
  - app/helpers/alchemy/admin/ingredients_helper.rb
745
751
  - app/helpers/alchemy/admin/navigation_helper.rb
@@ -756,6 +762,7 @@ files:
756
762
  - app/javascript/alchemy_admin/components/action.js
757
763
  - app/javascript/alchemy_admin/components/alchemy_html_element.js
758
764
  - app/javascript/alchemy_admin/components/attachment_select.js
765
+ - app/javascript/alchemy_admin/components/auto_submit.js
759
766
  - app/javascript/alchemy_admin/components/button.js
760
767
  - app/javascript/alchemy_admin/components/char_counter.js
761
768
  - app/javascript/alchemy_admin/components/clipboard_button.js
@@ -765,6 +772,7 @@ files:
765
772
  - app/javascript/alchemy_admin/components/element_editor.js
766
773
  - app/javascript/alchemy_admin/components/element_editor/delete_element_button.js
767
774
  - app/javascript/alchemy_admin/components/element_editor/publish_element_button.js
775
+ - app/javascript/alchemy_admin/components/element_select.js
768
776
  - app/javascript/alchemy_admin/components/elements_window.js
769
777
  - app/javascript/alchemy_admin/components/elements_window_handle.js
770
778
  - app/javascript/alchemy_admin/components/growl.js
@@ -827,6 +835,7 @@ files:
827
835
  - app/javascript/tinymce/icons/remixicons/index.js
828
836
  - app/javascript/tinymce/plugins/alchemy_link/index.js
829
837
  - app/jobs/alchemy/base_job.rb
838
+ - app/jobs/alchemy/delete_picture_job.rb
830
839
  - app/jobs/alchemy/publish_page_job.rb
831
840
  - app/mailers/alchemy/base_mailer.rb
832
841
  - app/mailers/alchemy/messages_mailer.rb
@@ -907,6 +916,7 @@ files:
907
916
  - app/models/alchemy/tag.rb
908
917
  - app/models/concerns/alchemy/dom_ids.rb
909
918
  - app/models/concerns/alchemy/picture_thumbnails.rb
919
+ - app/models/concerns/alchemy/relatable_resource.rb
910
920
  - app/models/concerns/alchemy/touch_elements.rb
911
921
  - app/serializers/alchemy/attachment_serializer.rb
912
922
  - app/serializers/alchemy/base_serializer.rb
@@ -924,10 +934,12 @@ files:
924
934
  - app/services/alchemy/dragonfly_to_image_processing.rb
925
935
  - app/services/alchemy/duplicate_element.rb
926
936
  - app/services/alchemy/tag_validations.rb
937
+ - app/stylesheets/alchemy/_custom-properties.scss
927
938
  - app/stylesheets/alchemy/_defaults.scss
928
939
  - app/stylesheets/alchemy/_extends.scss
929
940
  - app/stylesheets/alchemy/_fonts.scss
930
941
  - app/stylesheets/alchemy/_mixins.scss
942
+ - app/stylesheets/alchemy/_themes.scss
931
943
  - app/stylesheets/alchemy/_variables.scss
932
944
  - app/stylesheets/alchemy/admin.scss
933
945
  - app/stylesheets/alchemy/admin/archive.scss
@@ -938,6 +950,7 @@ files:
938
950
  - app/stylesheets/alchemy/admin/clipboard.scss
939
951
  - app/stylesheets/alchemy/admin/dashboard.scss
940
952
  - app/stylesheets/alchemy/admin/dialogs.scss
953
+ - app/stylesheets/alchemy/admin/element-select.scss
941
954
  - app/stylesheets/alchemy/admin/elements.scss
942
955
  - app/stylesheets/alchemy/admin/errors.scss
943
956
  - app/stylesheets/alchemy/admin/filters.scss
@@ -972,10 +985,15 @@ files:
972
985
  - app/stylesheets/alchemy/admin/toolbar.scss
973
986
  - app/stylesheets/alchemy/admin/typography.scss
974
987
  - app/stylesheets/alchemy/admin/upload.scss
975
- - app/stylesheets/alchemy/custom-properties.css
988
+ - app/stylesheets/alchemy/dark-theme.scss
989
+ - app/stylesheets/alchemy/light-theme.scss
990
+ - app/stylesheets/alchemy/theme.scss
976
991
  - app/stylesheets/alchemy/welcome.scss
992
+ - app/stylesheets/tinymce/skins/content/alchemy-dark/content.scss
977
993
  - app/stylesheets/tinymce/skins/content/alchemy/content.scss
978
994
  - app/stylesheets/tinymce/skins/skintool.json
995
+ - app/stylesheets/tinymce/skins/ui/alchemy-dark/content.scss
996
+ - app/stylesheets/tinymce/skins/ui/alchemy-dark/skin.scss
979
997
  - app/stylesheets/tinymce/skins/ui/alchemy/content.scss
980
998
  - app/stylesheets/tinymce/skins/ui/alchemy/fonts/tinymce-mobile.woff
981
999
  - app/stylesheets/tinymce/skins/ui/alchemy/skin.scss
@@ -1098,9 +1116,11 @@ files:
1098
1116
  - app/views/alchemy/admin/pictures/_filter_and_size_bar.html.erb
1099
1117
  - app/views/alchemy/admin/pictures/_form.html.erb
1100
1118
  - app/views/alchemy/admin/pictures/_infos.html.erb
1119
+ - app/views/alchemy/admin/pictures/_library_sidebar.html.erb
1101
1120
  - app/views/alchemy/admin/pictures/_picture.html.erb
1102
1121
  - app/views/alchemy/admin/pictures/_picture_description_field.html.erb
1103
1122
  - app/views/alchemy/admin/pictures/_picture_to_assign.html.erb
1123
+ - app/views/alchemy/admin/pictures/_sorting_select.html.erb
1104
1124
  - app/views/alchemy/admin/pictures/_tag_list.html.erb
1105
1125
  - app/views/alchemy/admin/pictures/archive_overlay.js.erb
1106
1126
  - app/views/alchemy/admin/pictures/assign.js.erb
@@ -1115,6 +1135,7 @@ files:
1115
1135
  - app/views/alchemy/admin/resources/_pagination.html.erb
1116
1136
  - app/views/alchemy/admin/resources/_per_page_select.html.erb
1117
1137
  - app/views/alchemy/admin/resources/_resource_table.html.erb
1138
+ - app/views/alchemy/admin/resources/_resource_usage_info.html.erb
1118
1139
  - app/views/alchemy/admin/resources/_table_header.html.erb
1119
1140
  - app/views/alchemy/admin/resources/_tag_list.html.erb
1120
1141
  - app/views/alchemy/admin/resources/edit.html.erb
@@ -1185,15 +1206,6 @@ files:
1185
1206
  - app/views/kaminari/alchemy/_prev_page.html.erb
1186
1207
  - app/views/layouts/alchemy/admin.html.erb
1187
1208
  - app/views/layouts/alchemy/sitemap.xml.erb
1188
- - bin/importmap
1189
- - bin/rails
1190
- - bin/rspec
1191
- - bin/setup
1192
- - bin/start
1193
- - bun.lockb
1194
- - bundles/remixicon.mjs
1195
- - bundles/shoelace.js
1196
- - bundles/tinymce.js
1197
1209
  - config/alchemy/config.yml
1198
1210
  - config/alchemy/modules.yml
1199
1211
  - config/brakeman.ignore
@@ -1212,7 +1224,7 @@ files:
1212
1224
  - db/migrate/20231113104432_create_page_mutexes.rb
1213
1225
  - db/migrate/20240314105244_create_alchemy_picture_descriptions.rb
1214
1226
  - db/migrate/20250626160259_add_unique_index_to_picture_descriptions.rb
1215
- - eslint.config.js
1227
+ - db/migrate/20250905140323_add_created_at_index_to_pictures_and_attachments.rb
1216
1228
  - lib/alchemy.rb
1217
1229
  - lib/alchemy/ability_helper.rb
1218
1230
  - lib/alchemy/admin/locale.rb
@@ -1224,19 +1236,20 @@ files:
1224
1236
  - lib/alchemy/configuration/base_option.rb
1225
1237
  - lib/alchemy/configuration/boolean_option.rb
1226
1238
  - lib/alchemy/configuration/class_option.rb
1227
- - lib/alchemy/configuration/class_set_option.rb
1228
- - lib/alchemy/configuration/integer_list_option.rb
1239
+ - lib/alchemy/configuration/collection_option.rb
1240
+ - lib/alchemy/configuration/configuration_option.rb
1229
1241
  - lib/alchemy/configuration/integer_option.rb
1230
- - lib/alchemy/configuration/list_option.rb
1242
+ - lib/alchemy/configuration/pathname_option.rb
1231
1243
  - lib/alchemy/configuration/regexp_option.rb
1232
- - lib/alchemy/configuration/string_list_option.rb
1233
1244
  - lib/alchemy/configuration/string_option.rb
1234
1245
  - lib/alchemy/configuration_methods.rb
1235
1246
  - lib/alchemy/configurations/default_language.rb
1236
1247
  - lib/alchemy/configurations/default_site.rb
1237
1248
  - lib/alchemy/configurations/format_matchers.rb
1249
+ - lib/alchemy/configurations/importmap.rb
1238
1250
  - lib/alchemy/configurations/mailer.rb
1239
1251
  - lib/alchemy/configurations/main.rb
1252
+ - lib/alchemy/configurations/page_cache.rb
1240
1253
  - lib/alchemy/configurations/preview.rb
1241
1254
  - lib/alchemy/configurations/sitemap.rb
1242
1255
  - lib/alchemy/configurations/uploader.rb
@@ -1289,6 +1302,7 @@ files:
1289
1302
  - lib/alchemy/test_support/having_crop_action_examples.rb
1290
1303
  - lib/alchemy/test_support/having_picture_thumbnails_examples.rb
1291
1304
  - lib/alchemy/test_support/integration_helpers.rb
1305
+ - lib/alchemy/test_support/relatable_resource_examples.rb
1292
1306
  - lib/alchemy/test_support/rspec_matchers.rb
1293
1307
  - lib/alchemy/test_support/shared_contexts.rb
1294
1308
  - lib/alchemy/test_support/shared_dom_ids_examples.rb
@@ -1298,9 +1312,7 @@ files:
1298
1312
  - lib/alchemy/test_support/shared_uploader_examples.rb
1299
1313
  - lib/alchemy/tinymce.rb
1300
1314
  - lib/alchemy/upgrader.rb
1301
- - lib/alchemy/upgrader/.keep
1302
1315
  - lib/alchemy/upgrader/eight_zero.rb
1303
- - lib/alchemy/upgrader/tasks/.keep
1304
1316
  - lib/alchemy/version.rb
1305
1317
  - lib/alchemy_cms.rb
1306
1318
  - lib/generators/alchemy/base.rb
@@ -1352,8 +1364,12 @@ files:
1352
1364
  - lib/tasks/alchemy/tidy.rake
1353
1365
  - lib/tasks/alchemy/upgrade.rake
1354
1366
  - lib/tasks/alchemy/usage.rake
1355
- - rollup.config.mjs
1356
1367
  - vendor/assets/stylesheets/alchemy_admin/select2.css
1368
+ - vendor/assets/stylesheets/tinymce/skins/content/dark/content.min.css
1369
+ - vendor/assets/stylesheets/tinymce/skins/content/default/content.min.css
1370
+ - vendor/assets/stylesheets/tinymce/skins/ui/oxide-dark/content.min.css
1371
+ - vendor/assets/stylesheets/tinymce/skins/ui/oxide-dark/skin.min.css
1372
+ - vendor/assets/stylesheets/tinymce/skins/ui/oxide/skin.min.css
1357
1373
  - vendor/javascript/clipboard.min.js
1358
1374
  - vendor/javascript/cropperjs.min.js
1359
1375
  - vendor/javascript/flatpickr.min.js
@@ -1366,7 +1382,6 @@ files:
1366
1382
  - vendor/javascript/sortable.min.js
1367
1383
  - vendor/javascript/tinymce.min.js
1368
1384
  - vendor/javascript/ungap-custom-elements.min.js
1369
- - vitest.config.js
1370
1385
  homepage: https://alchemy-cms.com
1371
1386
  licenses:
1372
1387
  - BSD-3-Clause
@@ -1410,7 +1425,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1410
1425
  version: '0'
1411
1426
  requirements:
1412
1427
  - ImageMagick (libmagick), v6.6 or greater.
1413
- rubygems_version: 3.6.7
1428
+ rubygems_version: 3.7.2
1414
1429
  specification_version: 4
1415
1430
  summary: A powerful, userfriendly and flexible CMS for Rails
1416
1431
  test_files: []