simple-module-pagebuilder 0.0.8__tar.gz → 0.0.9__tar.gz

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 (336) hide show
  1. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/PKG-INFO +1 -1
  2. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/package.json +1 -1
  3. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/endpoints/public_views.py +5 -2
  4. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/endpoints/seo.py +4 -2
  5. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/tenancy.py +26 -0
  6. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pyproject.toml +1 -1
  7. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_tenancy_public.py +37 -0
  8. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/.gitignore +0 -0
  9. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/README.md +0 -0
  10. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/__init__.py +0 -0
  11. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/board.py +0 -0
  12. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/boot.py +0 -0
  13. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/ConfirmDialog.tsx +0 -0
  14. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/DiffSummary.tsx +0 -0
  15. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/NewPageDialog.tsx +0 -0
  16. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/NoteDialog.tsx +0 -0
  17. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/PageBoard.tsx +0 -0
  18. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/PageBoardCard.tsx +0 -0
  19. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/PageListFilters.tsx +0 -0
  20. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/PageListRow.tsx +0 -0
  21. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/ScheduledBadge.tsx +0 -0
  22. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/StatusBadge.tsx +0 -0
  23. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/TranslatePageDialog.tsx +0 -0
  24. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/blockRegistry.test.ts +0 -0
  25. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/blockRegistry.ts +0 -0
  26. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/blocks/Button.tsx +0 -0
  27. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/blocks/Columns.tsx +0 -0
  28. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/blocks/Heading.tsx +0 -0
  29. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/blocks/Image.test.tsx +0 -0
  30. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/blocks/Image.tsx +0 -0
  31. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/blocks/MediaPicker.tsx +0 -0
  32. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/blocks/Spacer.tsx +0 -0
  33. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/blocks/Text.tsx +0 -0
  34. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/editor/BlockOutline.tsx +0 -0
  35. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/editor/NarrowCanvas.tsx +0 -0
  36. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/editor/PageActions.tsx +0 -0
  37. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/editor/PageEditorToolbar.tsx +0 -0
  38. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/editor/PageInspectorDrawer.tsx +0 -0
  39. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/editor/PageSettingsPanel.tsx +0 -0
  40. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/editor/RevisionHistoryPanel.tsx +0 -0
  41. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/editor/SchedulePanel.tsx +0 -0
  42. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/editor/SeoPreview.tsx +0 -0
  43. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/editor/SeoSettingsPanel.tsx +0 -0
  44. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/editor/TranslationsPanel.tsx +0 -0
  45. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/layoutPuckConfig.tsx +0 -0
  46. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/lazyBlock.tsx +0 -0
  47. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/localizeConfig.test.ts +0 -0
  48. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/localizeConfig.ts +0 -0
  49. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/media/MediaFilters.tsx +0 -0
  50. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/media/MediaFolderSidebar.tsx +0 -0
  51. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/media/MediaGrid.tsx +0 -0
  52. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/media/MediaHeader.tsx +0 -0
  53. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/media/MediaUploadQueue.tsx +0 -0
  54. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/media/MediaUsageList.tsx +0 -0
  55. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/media/types.ts +0 -0
  56. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/migrateContent.test.ts +0 -0
  57. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/migrateContent.ts +0 -0
  58. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/puckConfig.test.tsx +0 -0
  59. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/puckConfig.tsx +0 -0
  60. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/snapshots/ImportPlanSummary.tsx +0 -0
  61. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/snapshots/SnapshotList.tsx +0 -0
  62. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/snapshots/UploadBundleDialog.tsx +0 -0
  63. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/snapshots/planSummary.test.ts +0 -0
  64. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/snapshots/planSummary.ts +0 -0
  65. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgetCatalog.test.tsx +0 -0
  66. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgetCatalog.ts +0 -0
  67. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_internal/accent-text.tsx +0 -0
  68. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_internal/disclosure-chevron.tsx +0 -0
  69. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_internal/eyebrow-split-section.tsx +0 -0
  70. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_internal/link-arrow.tsx +0 -0
  71. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_internal/rich-text.tsx +0 -0
  72. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_internal/solid-icons.tsx +0 -0
  73. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_shared/background-media.tsx +0 -0
  74. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_shared/content-media.tsx +0 -0
  75. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_shared/cta-button.tsx +0 -0
  76. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_shared/empty-placeholder.tsx +0 -0
  77. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_shared/eyebrow-text.tsx +0 -0
  78. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_shared/heading.tsx +0 -0
  79. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_shared/image-srcset.ts +0 -0
  80. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_shared/index.ts +0 -0
  81. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_shared/mask.ts +0 -0
  82. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_shared/section.tsx +0 -0
  83. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_shared/social-icon.tsx +0 -0
  84. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/_shared/text-link.tsx +0 -0
  85. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/accordion-widget.tsx +0 -0
  86. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/alert-widget.tsx +0 -0
  87. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/app-store-badges-widget.tsx +0 -0
  88. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/article-cards-render.tsx +0 -0
  89. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/article-cards-widget.tsx +0 -0
  90. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/call-to-action-render.tsx +0 -0
  91. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/call-to-action-styles.ts +0 -0
  92. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/call-to-action-widget.tsx +0 -0
  93. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/carousel-widget.tsx +0 -0
  94. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/centered-hero-widget.tsx +0 -0
  95. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/colored-action-list-widget.tsx +0 -0
  96. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/column-widget.tsx +0 -0
  97. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/contact-cards-widget.tsx +0 -0
  98. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/contact-form-render.tsx +0 -0
  99. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/contact-form-widget.tsx +0 -0
  100. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/container-widget.tsx +0 -0
  101. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/definition-list-widget.tsx +0 -0
  102. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/divider-widget.test.tsx +0 -0
  103. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/divider-widget.tsx +0 -0
  104. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/eyebrow-section-widget.tsx +0 -0
  105. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/faq-render.tsx +0 -0
  106. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/faq-widget.tsx +0 -0
  107. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/feature-card-widget.tsx +0 -0
  108. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/feature-cards-render.tsx +0 -0
  109. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/feature-cards-styles.ts +0 -0
  110. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/feature-cards-widget.tsx +0 -0
  111. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/feature-grid-widget.tsx +0 -0
  112. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/feature-showcase-widget.tsx +0 -0
  113. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/gallery-widget.tsx +0 -0
  114. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/grid-widget.tsx +0 -0
  115. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/hero-widget-props.ts +0 -0
  116. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/hero-widget.tsx +0 -0
  117. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/html-widget.tsx +0 -0
  118. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/iframe-widget.tsx +0 -0
  119. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/leaderboard-widget.tsx +0 -0
  120. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/list-widget.tsx +0 -0
  121. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/logo-cloud-widget.tsx +0 -0
  122. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/markdown-widget.tsx +0 -0
  123. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/media-object-layout.ts +0 -0
  124. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/media-object-render.tsx +0 -0
  125. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/media-object-text.tsx +0 -0
  126. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/media-object-widget.tsx +0 -0
  127. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/newsletter-widget.tsx +0 -0
  128. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/page-header-widget.tsx +0 -0
  129. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/prose-section-widget.tsx +0 -0
  130. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/quote-widget.tsx +0 -0
  131. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/row-widget.tsx +0 -0
  132. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/section-intro-widget.tsx +0 -0
  133. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/signup-banner-widget.tsx +0 -0
  134. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/simple-action-list-widget.tsx +0 -0
  135. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/site-footer-widget.tsx +0 -0
  136. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/site-header-nav.tsx +0 -0
  137. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/site-header-widget.tsx +0 -0
  138. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/social-banner-widget.tsx +0 -0
  139. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/stats-widget.tsx +0 -0
  140. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/steps-widget.tsx +0 -0
  141. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/story-cards-widget.tsx +0 -0
  142. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/table-widget.tsx +0 -0
  143. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/tabs-widget.tsx +0 -0
  144. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/tags-widget.tsx +0 -0
  145. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/testimonial-widget.tsx +0 -0
  146. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/timeline-layout.ts +0 -0
  147. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/timeline-render.tsx +0 -0
  148. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/timeline-widget.tsx +0 -0
  149. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/under-construction-widget.tsx +0 -0
  150. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/video-widget.tsx +0 -0
  151. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/components/widgets/welcome-widget.tsx +0 -0
  152. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/contracts/__init__.py +0 -0
  153. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/contracts/events.py +0 -0
  154. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/contracts/schemas/__init__.py +0 -0
  155. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/contracts/schemas/_layout.py +0 -0
  156. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/contracts/schemas/_media.py +0 -0
  157. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/contracts/schemas/_pages.py +0 -0
  158. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/contracts/schemas/_snapshots.py +0 -0
  159. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/conversion/blocks-to-html.test.ts +0 -0
  160. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/conversion/blocks-to-html.ts +0 -0
  161. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/conversion/index.ts +0 -0
  162. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/conversion/types.ts +0 -0
  163. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/deps.py +0 -0
  164. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/diff.py +0 -0
  165. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/endpoints/__init__.py +0 -0
  166. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/endpoints/api/__init__.py +0 -0
  167. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/endpoints/api/_deps.py +0 -0
  168. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/endpoints/api/layout.py +0 -0
  169. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/endpoints/api/media_detail.py +0 -0
  170. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/endpoints/api/pages.py +0 -0
  171. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/endpoints/api/revisions.py +0 -0
  172. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/endpoints/api/snapshots.py +0 -0
  173. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/endpoints/api/uploads.py +0 -0
  174. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/endpoints/api/workflow.py +0 -0
  175. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/endpoints/content_views.py +0 -0
  176. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/endpoints/views.py +0 -0
  177. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/fields/checkbox-field.tsx +0 -0
  178. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/fields/file-picker/file-gallery.tsx +0 -0
  179. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/fields/file-picker/image-picker-field.tsx +0 -0
  180. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/fields/file-picker/index.ts +0 -0
  181. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/fields/file-picker/types.ts +0 -0
  182. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/fields/index.ts +0 -0
  183. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/fields/media-adapter.ts +0 -0
  184. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/hooks/useAutosave.ts +0 -0
  185. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/hooks/useEditorForm.ts +0 -0
  186. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/hooks/useIsNarrow.ts +0 -0
  187. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/hooks/useMediaDetail.ts +0 -0
  188. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/hooks/useMediaUploads.ts +0 -0
  189. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/hooks/usePageRevisions.ts +0 -0
  190. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/hooks/usePageSchedule.ts +0 -0
  191. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/hooks/usePageWorkflow.ts +0 -0
  192. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/hooks/usePendingDialog.ts +0 -0
  193. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/hooks/useSnapshots.ts +0 -0
  194. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/layout_service.py +0 -0
  195. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/locales/en.json +0 -0
  196. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/locales.py +0 -0
  197. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/media_files.py +0 -0
  198. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/media_images.py +0 -0
  199. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/media_queries.py +0 -0
  200. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/media_service.py +0 -0
  201. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/media_usage.py +0 -0
  202. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/models/__init__.py +0 -0
  203. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/models/_base.py +0 -0
  204. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/models/_layout.py +0 -0
  205. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/models/_media.py +0 -0
  206. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/models/_page.py +0 -0
  207. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/models/_redirect.py +0 -0
  208. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/models/_snapshot.py +0 -0
  209. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/module.py +0 -0
  210. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/pages/ContentImportReview.tsx +0 -0
  211. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/pages/ContentSnapshots.tsx +0 -0
  212. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/pages/LayoutEditor.tsx +0 -0
  213. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/pages/MediaDetail.tsx +0 -0
  214. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/pages/MediaLibrary.tsx +0 -0
  215. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/pages/PageEditor.tsx +0 -0
  216. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/pages/PageList.tsx +0 -0
  217. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/pages/PendingReview.tsx +0 -0
  218. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/pages/PublicPage.tsx +0 -0
  219. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/pages/Trash.tsx +0 -0
  220. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/permissions.py +0 -0
  221. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/public_claims.py +0 -0
  222. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/py.typed +0 -0
  223. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/redirects.py +0 -0
  224. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/scheduler.py +0 -0
  225. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/security.py +0 -0
  226. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/service/__init__.py +0 -0
  227. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/service/_common.py +0 -0
  228. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/service/_revisions.py +0 -0
  229. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/service/_translations.py +0 -0
  230. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/service/_trash.py +0 -0
  231. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/service/_workflow.py +0 -0
  232. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/services.py +0 -0
  233. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/settings.py +0 -0
  234. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/snapshots/__init__.py +0 -0
  235. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/snapshots/apply.py +0 -0
  236. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/snapshots/archive.py +0 -0
  237. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/snapshots/assets.py +0 -0
  238. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/snapshots/blobs.py +0 -0
  239. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/snapshots/capture.py +0 -0
  240. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/snapshots/format.py +0 -0
  241. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/snapshots/media_match.py +0 -0
  242. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/snapshots/pages.py +0 -0
  243. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/snapshots/plan.py +0 -0
  244. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/snapshots/service.py +0 -0
  245. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/snapshots/validate.py +0 -0
  246. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/static/widgets-base.css +0 -0
  247. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/translation/apply.ts +0 -0
  248. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/translation/extract.ts +0 -0
  249. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/translation/index.ts +0 -0
  250. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/translation/translatable-fields.ts +0 -0
  251. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/translation/translation.test.ts +0 -0
  252. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/api.ts +0 -0
  253. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/blockOutline.test.ts +0 -0
  254. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/blockOutline.ts +0 -0
  255. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/datetime.ts +0 -0
  256. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/decorative-image.ts +0 -0
  257. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/editorSnapshot.ts +0 -0
  258. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/i18n.test.ts +0 -0
  259. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/i18n.ts +0 -0
  260. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/locale.ts +0 -0
  261. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/markdown.ts +0 -0
  262. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/measure.ts +0 -0
  263. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/mediaApi.ts +0 -0
  264. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/mediaFormat.ts +0 -0
  265. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/pagesApi.ts +0 -0
  266. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/parse-list.ts +0 -0
  267. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/request.test.ts +0 -0
  268. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/request.ts +0 -0
  269. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/slugify.test.ts +0 -0
  270. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/slugify.ts +0 -0
  271. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/snapshotsApi.ts +0 -0
  272. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/types.ts +0 -0
  273. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/pagebuilder/utils/widgetUtils.ts +0 -0
  274. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/conftest.py +0 -0
  275. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/db_fixture.py +0 -0
  276. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/locale_fixture.py +0 -0
  277. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/page_helpers.py +0 -0
  278. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/pg_support.py +0 -0
  279. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/snapshot_fixture.py +0 -0
  280. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/tenant_app.py +0 -0
  281. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/tenant_fixture.py +0 -0
  282. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_admin_list_view.py +0 -0
  283. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_approval_workflow.py +0 -0
  284. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_auth_gating.py +0 -0
  285. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_csrf.py +0 -0
  286. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_draft_preview.py +0 -0
  287. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_hreflang_and_sitemap.py +0 -0
  288. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_i18n.py +0 -0
  289. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_image_processing.py +0 -0
  290. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_media_detail.py +0 -0
  291. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_media_files.py +0 -0
  292. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_media_security.py +0 -0
  293. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_media_usage_escaping.py +0 -0
  294. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_module.py +0 -0
  295. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_multilingual.py +0 -0
  296. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_page_templates.py +0 -0
  297. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_page_translations.py +0 -0
  298. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_pages_api.py +0 -0
  299. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_pages_search.py +0 -0
  300. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_public_claims.py +0 -0
  301. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_public_routes.py +0 -0
  302. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_public_view_headers.py +0 -0
  303. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_public_viewer.py +0 -0
  304. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_redirects.py +0 -0
  305. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_revision_notes_and_diff.py +0 -0
  306. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_revisions_api.py +0 -0
  307. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_scheduled_publish.py +0 -0
  308. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_scheduler_stop.py +0 -0
  309. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_scheduler_tenancy.py +0 -0
  310. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_seo_meta.py +0 -0
  311. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_settings_source.py +0 -0
  312. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_site_layout.py +0 -0
  313. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_sitemap_robots.py +0 -0
  314. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_snapshot_apply.py +0 -0
  315. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_snapshot_apply_media.py +0 -0
  316. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_snapshot_archive.py +0 -0
  317. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_snapshot_assets.py +0 -0
  318. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_snapshot_blobs.py +0 -0
  319. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_snapshot_capture.py +0 -0
  320. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_snapshot_media_match.py +0 -0
  321. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_snapshot_models.py +0 -0
  322. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_snapshot_multilingual.py +0 -0
  323. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_snapshot_page_payload.py +0 -0
  324. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_snapshot_plan.py +0 -0
  325. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_snapshot_validate.py +0 -0
  326. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_snapshot_views.py +0 -0
  327. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_snapshots_api.py +0 -0
  328. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_tenancy_blobs.py +0 -0
  329. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_tenancy_core.py +0 -0
  330. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_tenancy_isolation.py +0 -0
  331. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_tenancy_media.py +0 -0
  332. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_tenancy_routes.py +0 -0
  333. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_trash.py +0 -0
  334. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_trash_preconditions.py +0 -0
  335. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tests/test_uploads_api.py +0 -0
  336. {simple_module_pagebuilder-0.0.8 → simple_module_pagebuilder-0.0.9}/tsconfig.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: simple_module_pagebuilder
3
- Version: 0.0.8
3
+ Version: 0.0.9
4
4
  Summary: Drag-and-drop visual page builder for simple_module apps
5
5
  Project-URL: Repository, https://github.com/antosubash/simple_module_python_modules
6
6
  Author-email: Anto Subash <antosubash@live.com>
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simple-module-py/pagebuilder",
3
- "version": "0.0.8",
3
+ "version": "0.0.9",
4
4
  "private": true,
5
5
  "description": "Frontend assets for the PageBuilder module",
6
6
  "peerDependencies": {
@@ -28,7 +28,7 @@ from pagebuilder.deps import get_settings
28
28
  from pagebuilder.layout_service import LayoutService, public_layout_props
29
29
  from pagebuilder.service import PagesService
30
30
  from pagebuilder.settings import PagebuilderSettings
31
- from pagebuilder.tenancy import bind_public
31
+ from pagebuilder.tenancy import bind_public, vary_on_tenant
32
32
 
33
33
  _PAGE_PUBLIC = "PageBuilder/PublicPage"
34
34
 
@@ -167,7 +167,8 @@ async def render_public_page(
167
167
  # the exact thing recording a redirect exists to prevent.
168
168
  claimed = await public_claims.claimed_url(db, moved_to, active)
169
169
  target = claimed or locales.public_path(prefix, moved_to, active)
170
- return RedirectResponse(target, status_code=301)
170
+ # A 301 is cacheable by default; key it on what picks the tenant.
171
+ return vary_on_tenant(RedirectResponse(target, status_code=301), request.app)
171
172
  raise HTTPException(status_code=404, detail="Page not found")
172
173
 
173
174
  layout = await LayoutService(db).get()
@@ -181,6 +182,8 @@ async def render_public_page(
181
182
  def apply_headers(response: Response) -> Response:
182
183
  response.headers["ETag"] = etag
183
184
  response.headers["Vary"] = "X-Inertia"
185
+ # On a multi-tenant host the tenant can come from the session, not the Host.
186
+ vary_on_tenant(response, request.app)
184
187
  response.headers["Cache-Control"] = cache_control
185
188
  # Which language was negotiated, for caches and for anything reading
186
189
  # the response without parsing the body.
@@ -19,7 +19,7 @@ from pagebuilder import locales, public_claims
19
19
  from pagebuilder.deps import get_settings
20
20
  from pagebuilder.service import PagesService
21
21
  from pagebuilder.settings import PagebuilderSettings
22
- from pagebuilder.tenancy import bind_public
22
+ from pagebuilder.tenancy import bind_public, vary_on_tenant
23
23
 
24
24
  seo_router = APIRouter()
25
25
 
@@ -137,11 +137,13 @@ async def sitemap(
137
137
  + ("\n" if entries else "")
138
138
  + "</urlset>\n"
139
139
  )
140
- return Response(
140
+ response = Response(
141
141
  content=body,
142
142
  media_type="application/xml",
143
143
  headers={"Cache-Control": f"public, max-age={settings.seo_cache_max_age}"},
144
144
  )
145
+ # Tenant-bound: on a multi-tenant host the session can pick the tenant.
146
+ return vary_on_tenant(response, request.app)
145
147
 
146
148
 
147
149
  @seo_router.get("/robots.txt", response_class=Response)
@@ -45,6 +45,8 @@ __all__ = [
45
45
  "mode_of",
46
46
  "resolve_admin",
47
47
  "resolve_public",
48
+ "tenant_vary",
49
+ "vary_on_tenant",
48
50
  ]
49
51
 
50
52
  _log = logging.getLogger("simple_module.pagebuilder")
@@ -119,6 +121,30 @@ def configure(app: Any) -> TenancyMode:
119
121
  return mode
120
122
 
121
123
 
124
+ def tenant_vary(app: Any) -> tuple[str, ...]:
125
+ """The request headers that pick a public response's tenant.
126
+
127
+ ``SINGLE``: none. ``MULTI``: on the apex host the framework falls back to
128
+ a member's session (``Cookie``) or the configured tenant header, so the
129
+ same Host + URL answers with different tenants' content and a shared
130
+ cache has to key on them too.
131
+ """
132
+ if mode_of(app) is TenancyMode.SINGLE:
133
+ return ()
134
+ header = (getattr(_tenant_middleware(app), "kwargs", None) or {}).get("header")
135
+ return ("Cookie", header) if header else ("Cookie",)
136
+
137
+
138
+ def vary_on_tenant(response: Any, app: Any) -> Any:
139
+ """Append :func:`tenant_vary` to *response*'s ``Vary``; a no-op in SINGLE."""
140
+ listed = [f.strip() for f in response.headers.get("vary", "").split(",") if f.strip()]
141
+ seen = {f.lower() for f in listed}
142
+ added = [f for f in tenant_vary(app) if f.lower() not in seen]
143
+ if added:
144
+ response.headers["Vary"] = ", ".join(listed + added)
145
+ return response
146
+
147
+
122
148
  def mode_of(app: Any) -> TenancyMode:
123
149
  """The stored mode, or a fresh detection before ``on_startup`` has run."""
124
150
  mode = getattr(getattr(app.state, _PACKAGE, None), "tenancy", None)
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "simple_module_pagebuilder"
3
- version = "0.0.8"
3
+ version = "0.0.9"
4
4
  description = "Drag-and-drop visual page builder for simple_module apps"
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -76,6 +76,43 @@ async def test_sitemap_lists_only_the_bound_tenant(mt: AsyncClient) -> None:
76
76
  assert "/p/beta" in b.text and "/p/alpha" not in b.text
77
77
 
78
78
 
79
+ def _vary(response) -> list[str]:
80
+ """The distinct Vary fields: Starlette's ``SessionMiddleware`` appends
81
+ ``Cookie`` without checking whether it is already listed."""
82
+ fields = (v.strip() for v in response.headers.get("vary", "").split(","))
83
+ return list(dict.fromkeys(f for f in fields if f))
84
+
85
+
86
+ @pytest.mark.unbound_tenant
87
+ async def test_multi_mode_public_responses_vary_on_cookie(mt: AsyncClient) -> None:
88
+ """The apex host can take the tenant from a member's session, so a shared
89
+ cache keyed on Host + URL alone could serve one tenant's page to another."""
90
+ await _publish(mt, A, "about", "About Acme")
91
+ page = await mt.get("/p/about", headers=A)
92
+ assert page.status_code == 200, page.text
93
+ assert _vary(page) == ["X-Inertia", "Cookie"]
94
+ cached = await mt.get("/p/about", headers={**A, "If-None-Match": page.headers["etag"]})
95
+ assert cached.status_code == 304
96
+ assert _vary(cached) == ["X-Inertia", "Cookie"]
97
+ sitemap = await mt.get("/sitemap.xml", headers=A)
98
+ assert sitemap.status_code == 200
99
+ assert sitemap.headers["cache-control"].startswith("public")
100
+ assert _vary(sitemap) == ["Cookie"]
101
+
102
+
103
+ async def test_single_mode_vary_is_unchanged(authed_client: AsyncClient) -> None:
104
+ created = await authed_client.post(API, json={"title": "Hi", "slug": "hi", "draft_data": {}})
105
+ assert created.status_code == 201, created.text
106
+ await authed_client.post(f"{API}/{created.json()['id']}/publish", json={})
107
+ page = await authed_client.get("/p/hi")
108
+ assert page.status_code == 200, page.text
109
+ # ``Cookie`` here is SessionMiddleware's (the render read the session).
110
+ assert page.headers["vary"] == "X-Inertia, Cookie"
111
+ cached = await authed_client.get("/p/hi", headers={"If-None-Match": page.headers["etag"]})
112
+ assert (cached.status_code, cached.headers.get("vary")) == (304, "X-Inertia")
113
+ assert (await authed_client.get("/sitemap.xml")).headers.get("vary") is None
114
+
115
+
79
116
  async def test_single_mode_stamps_the_default_tenant(authed_client: AsyncClient, db) -> None:
80
117
  created = await authed_client.post(API, json={"title": "Hi", "slug": "hi", "draft_data": {}})
81
118
  assert created.status_code == 201, created.text