@doxi/core 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +81 -0
  3. package/dist/collab/port.d.ts +46 -0
  4. package/dist/collab/port.d.ts.map +1 -0
  5. package/dist/collab/port.js +11 -0
  6. package/dist/collab/port.js.map +1 -0
  7. package/dist/commands/block-commands.d.ts +62 -0
  8. package/dist/commands/block-commands.d.ts.map +1 -0
  9. package/dist/commands/block-commands.js +208 -0
  10. package/dist/commands/block-commands.js.map +1 -0
  11. package/dist/commands/command.d.ts +13 -0
  12. package/dist/commands/command.d.ts.map +1 -0
  13. package/dist/commands/command.js +13 -0
  14. package/dist/commands/command.js.map +1 -0
  15. package/dist/commands/edit-commands.d.ts +5 -0
  16. package/dist/commands/edit-commands.d.ts.map +1 -0
  17. package/dist/commands/edit-commands.js +147 -0
  18. package/dist/commands/edit-commands.js.map +1 -0
  19. package/dist/commands/image-commands.d.ts +31 -0
  20. package/dist/commands/image-commands.d.ts.map +1 -0
  21. package/dist/commands/image-commands.js +130 -0
  22. package/dist/commands/image-commands.js.map +1 -0
  23. package/dist/commands/index.d.ts +11 -0
  24. package/dist/commands/index.d.ts.map +1 -0
  25. package/dist/commands/index.js +11 -0
  26. package/dist/commands/index.js.map +1 -0
  27. package/dist/commands/keymap.d.ts +34 -0
  28. package/dist/commands/keymap.d.ts.map +1 -0
  29. package/dist/commands/keymap.js +84 -0
  30. package/dist/commands/keymap.js.map +1 -0
  31. package/dist/commands/link-commands.d.ts +54 -0
  32. package/dist/commands/link-commands.d.ts.map +1 -0
  33. package/dist/commands/link-commands.js +151 -0
  34. package/dist/commands/link-commands.js.map +1 -0
  35. package/dist/commands/list-commands.d.ts +42 -0
  36. package/dist/commands/list-commands.d.ts.map +1 -0
  37. package/dist/commands/list-commands.js +316 -0
  38. package/dist/commands/list-commands.js.map +1 -0
  39. package/dist/commands/mark-commands.d.ts +53 -0
  40. package/dist/commands/mark-commands.d.ts.map +1 -0
  41. package/dist/commands/mark-commands.js +181 -0
  42. package/dist/commands/mark-commands.js.map +1 -0
  43. package/dist/commands/selection-commands.d.ts +3 -0
  44. package/dist/commands/selection-commands.d.ts.map +1 -0
  45. package/dist/commands/selection-commands.js +11 -0
  46. package/dist/commands/selection-commands.js.map +1 -0
  47. package/dist/commands/table-commands.d.ts +109 -0
  48. package/dist/commands/table-commands.d.ts.map +1 -0
  49. package/dist/commands/table-commands.js +884 -0
  50. package/dist/commands/table-commands.js.map +1 -0
  51. package/dist/history/history.d.ts +40 -0
  52. package/dist/history/history.d.ts.map +1 -0
  53. package/dist/history/history.js +139 -0
  54. package/dist/history/history.js.map +1 -0
  55. package/dist/history/index.d.ts +2 -0
  56. package/dist/history/index.d.ts.map +1 -0
  57. package/dist/history/index.js +2 -0
  58. package/dist/history/index.js.map +1 -0
  59. package/dist/html/index.d.ts +3 -0
  60. package/dist/html/index.d.ts.map +1 -0
  61. package/dist/html/index.js +3 -0
  62. package/dist/html/index.js.map +1 -0
  63. package/dist/html/parse.d.ts +4 -0
  64. package/dist/html/parse.d.ts.map +1 -0
  65. package/dist/html/parse.js +0 -0
  66. package/dist/html/parse.js.map +1 -0
  67. package/dist/html/serialize.d.ts +4 -0
  68. package/dist/html/serialize.d.ts.map +1 -0
  69. package/dist/html/serialize.js +75 -0
  70. package/dist/html/serialize.js.map +1 -0
  71. package/dist/index.d.ts +13 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +13 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/layout/index.d.ts +6 -0
  76. package/dist/layout/index.d.ts.map +1 -0
  77. package/dist/layout/index.js +6 -0
  78. package/dist/layout/index.js.map +1 -0
  79. package/dist/layout/layout-engine.d.ts +20 -0
  80. package/dist/layout/layout-engine.d.ts.map +1 -0
  81. package/dist/layout/layout-engine.js +198 -0
  82. package/dist/layout/layout-engine.js.map +1 -0
  83. package/dist/layout/measure.d.ts +9 -0
  84. package/dist/layout/measure.d.ts.map +1 -0
  85. package/dist/layout/measure.js +37 -0
  86. package/dist/layout/measure.js.map +1 -0
  87. package/dist/layout/split-paragraph.d.ts +28 -0
  88. package/dist/layout/split-paragraph.d.ts.map +1 -0
  89. package/dist/layout/split-paragraph.js +122 -0
  90. package/dist/layout/split-paragraph.js.map +1 -0
  91. package/dist/layout/split-table.d.ts +46 -0
  92. package/dist/layout/split-table.d.ts.map +1 -0
  93. package/dist/layout/split-table.js +84 -0
  94. package/dist/layout/split-table.js.map +1 -0
  95. package/dist/layout/types.d.ts +73 -0
  96. package/dist/layout/types.d.ts.map +1 -0
  97. package/dist/layout/types.js +36 -0
  98. package/dist/layout/types.js.map +1 -0
  99. package/dist/layout/widow-orphan.d.ts +15 -0
  100. package/dist/layout/widow-orphan.d.ts.map +1 -0
  101. package/dist/layout/widow-orphan.js +14 -0
  102. package/dist/layout/widow-orphan.js.map +1 -0
  103. package/dist/model/content-expr.d.ts +32 -0
  104. package/dist/model/content-expr.d.ts.map +1 -0
  105. package/dist/model/content-expr.js +106 -0
  106. package/dist/model/content-expr.js.map +1 -0
  107. package/dist/model/fragment.d.ts +17 -0
  108. package/dist/model/fragment.d.ts.map +1 -0
  109. package/dist/model/fragment.js +44 -0
  110. package/dist/model/fragment.js.map +1 -0
  111. package/dist/model/index.d.ts +10 -0
  112. package/dist/model/index.d.ts.map +1 -0
  113. package/dist/model/index.js +10 -0
  114. package/dist/model/index.js.map +1 -0
  115. package/dist/model/mark.d.ts +35 -0
  116. package/dist/model/mark.d.ts.map +1 -0
  117. package/dist/model/mark.js +89 -0
  118. package/dist/model/mark.js.map +1 -0
  119. package/dist/model/node-type.d.ts +36 -0
  120. package/dist/model/node-type.d.ts.map +1 -0
  121. package/dist/model/node-type.js +14 -0
  122. package/dist/model/node-type.js.map +1 -0
  123. package/dist/model/node.d.ts +36 -0
  124. package/dist/model/node.d.ts.map +1 -0
  125. package/dist/model/node.js +192 -0
  126. package/dist/model/node.js.map +1 -0
  127. package/dist/model/position.d.ts +66 -0
  128. package/dist/model/position.d.ts.map +1 -0
  129. package/dist/model/position.js +158 -0
  130. package/dist/model/position.js.map +1 -0
  131. package/dist/model/schema.d.ts +28 -0
  132. package/dist/model/schema.d.ts.map +1 -0
  133. package/dist/model/schema.js +195 -0
  134. package/dist/model/schema.js.map +1 -0
  135. package/dist/model/slice.d.ts +26 -0
  136. package/dist/model/slice.d.ts.map +1 -0
  137. package/dist/model/slice.js +56 -0
  138. package/dist/model/slice.js.map +1 -0
  139. package/dist/model/table-grid.d.ts +71 -0
  140. package/dist/model/table-grid.d.ts.map +1 -0
  141. package/dist/model/table-grid.js +130 -0
  142. package/dist/model/table-grid.js.map +1 -0
  143. package/dist/plugin/index.d.ts +3 -0
  144. package/dist/plugin/index.d.ts.map +1 -0
  145. package/dist/plugin/index.js +3 -0
  146. package/dist/plugin/index.js.map +1 -0
  147. package/dist/plugin/plugin-key.d.ts +13 -0
  148. package/dist/plugin/plugin-key.d.ts.map +1 -0
  149. package/dist/plugin/plugin-key.js +13 -0
  150. package/dist/plugin/plugin-key.js.map +1 -0
  151. package/dist/plugin/plugin-state.d.ts +2 -0
  152. package/dist/plugin/plugin-state.d.ts.map +1 -0
  153. package/dist/plugin/plugin-state.js +3 -0
  154. package/dist/plugin/plugin-state.js.map +1 -0
  155. package/dist/plugin/plugin.d.ts +39 -0
  156. package/dist/plugin/plugin.d.ts.map +1 -0
  157. package/dist/plugin/plugin.js +10 -0
  158. package/dist/plugin/plugin.js.map +1 -0
  159. package/dist/schema/default.d.ts +163 -0
  160. package/dist/schema/default.d.ts.map +1 -0
  161. package/dist/schema/default.js +94 -0
  162. package/dist/schema/default.js.map +1 -0
  163. package/dist/schema/index.d.ts +2 -0
  164. package/dist/schema/index.d.ts.map +1 -0
  165. package/dist/schema/index.js +2 -0
  166. package/dist/schema/index.js.map +1 -0
  167. package/dist/serialize/index.d.ts +2 -0
  168. package/dist/serialize/index.d.ts.map +1 -0
  169. package/dist/serialize/index.js +2 -0
  170. package/dist/serialize/index.js.map +1 -0
  171. package/dist/serialize/json.d.ts +15 -0
  172. package/dist/serialize/json.d.ts.map +1 -0
  173. package/dist/serialize/json.js +23 -0
  174. package/dist/serialize/json.js.map +1 -0
  175. package/dist/state/all-selection.d.ts +11 -0
  176. package/dist/state/all-selection.d.ts.map +1 -0
  177. package/dist/state/all-selection.js +17 -0
  178. package/dist/state/all-selection.js.map +1 -0
  179. package/dist/state/cell-selection.d.ts +30 -0
  180. package/dist/state/cell-selection.d.ts.map +1 -0
  181. package/dist/state/cell-selection.js +38 -0
  182. package/dist/state/cell-selection.js.map +1 -0
  183. package/dist/state/editor-state.d.ts +46 -0
  184. package/dist/state/editor-state.d.ts.map +1 -0
  185. package/dist/state/editor-state.js +211 -0
  186. package/dist/state/editor-state.js.map +1 -0
  187. package/dist/state/index.d.ts +7 -0
  188. package/dist/state/index.d.ts.map +1 -0
  189. package/dist/state/index.js +7 -0
  190. package/dist/state/index.js.map +1 -0
  191. package/dist/state/node-selection.d.ts +16 -0
  192. package/dist/state/node-selection.d.ts.map +1 -0
  193. package/dist/state/node-selection.js +51 -0
  194. package/dist/state/node-selection.js.map +1 -0
  195. package/dist/state/selection.d.ts +29 -0
  196. package/dist/state/selection.d.ts.map +1 -0
  197. package/dist/state/selection.js +24 -0
  198. package/dist/state/selection.js.map +1 -0
  199. package/dist/state/text-selection.d.ts +10 -0
  200. package/dist/state/text-selection.d.ts.map +1 -0
  201. package/dist/state/text-selection.js +26 -0
  202. package/dist/state/text-selection.js.map +1 -0
  203. package/dist/transform/attr-step.d.ts +16 -0
  204. package/dist/transform/attr-step.d.ts.map +1 -0
  205. package/dist/transform/attr-step.js +98 -0
  206. package/dist/transform/attr-step.js.map +1 -0
  207. package/dist/transform/index.d.ts +10 -0
  208. package/dist/transform/index.d.ts.map +1 -0
  209. package/dist/transform/index.js +10 -0
  210. package/dist/transform/index.js.map +1 -0
  211. package/dist/transform/mapping.d.ts +44 -0
  212. package/dist/transform/mapping.d.ts.map +1 -0
  213. package/dist/transform/mapping.js +101 -0
  214. package/dist/transform/mapping.js.map +1 -0
  215. package/dist/transform/mark-step.d.ts +27 -0
  216. package/dist/transform/mark-step.d.ts.map +1 -0
  217. package/dist/transform/mark-step.js +146 -0
  218. package/dist/transform/mark-step.js.map +1 -0
  219. package/dist/transform/replace-around-step.d.ts +35 -0
  220. package/dist/transform/replace-around-step.d.ts.map +1 -0
  221. package/dist/transform/replace-around-step.js +144 -0
  222. package/dist/transform/replace-around-step.js.map +1 -0
  223. package/dist/transform/replace-step.d.ts +17 -0
  224. package/dist/transform/replace-step.d.ts.map +1 -0
  225. package/dist/transform/replace-step.js +72 -0
  226. package/dist/transform/replace-step.js.map +1 -0
  227. package/dist/transform/replace.d.ts +18 -0
  228. package/dist/transform/replace.d.ts.map +1 -0
  229. package/dist/transform/replace.js +132 -0
  230. package/dist/transform/replace.js.map +1 -0
  231. package/dist/transform/set-page-meta-step.d.ts +42 -0
  232. package/dist/transform/set-page-meta-step.d.ts.map +1 -0
  233. package/dist/transform/set-page-meta-step.js +75 -0
  234. package/dist/transform/set-page-meta-step.js.map +1 -0
  235. package/dist/transform/step.d.ts +34 -0
  236. package/dist/transform/step.d.ts.map +1 -0
  237. package/dist/transform/step.js +23 -0
  238. package/dist/transform/step.js.map +1 -0
  239. package/dist/transform/transaction.d.ts +20 -0
  240. package/dist/transform/transaction.d.ts.map +1 -0
  241. package/dist/transform/transaction.js +38 -0
  242. package/dist/transform/transaction.js.map +1 -0
  243. package/dist/version.d.ts +2 -0
  244. package/dist/version.d.ts.map +1 -0
  245. package/dist/version.js +5 -0
  246. package/dist/version.js.map +1 -0
  247. package/dist/view/cell-drag.d.ts +33 -0
  248. package/dist/view/cell-drag.d.ts.map +1 -0
  249. package/dist/view/cell-drag.js +177 -0
  250. package/dist/view/cell-drag.js.map +1 -0
  251. package/dist/view/clipboard.d.ts +5 -0
  252. package/dist/view/clipboard.d.ts.map +1 -0
  253. package/dist/view/clipboard.js +97 -0
  254. package/dist/view/clipboard.js.map +1 -0
  255. package/dist/view/default-renderer.d.ts +3 -0
  256. package/dist/view/default-renderer.d.ts.map +1 -0
  257. package/dist/view/default-renderer.js +142 -0
  258. package/dist/view/default-renderer.js.map +1 -0
  259. package/dist/view/dom-spec.d.ts +11 -0
  260. package/dist/view/dom-spec.d.ts.map +1 -0
  261. package/dist/view/dom-spec.js +32 -0
  262. package/dist/view/dom-spec.js.map +1 -0
  263. package/dist/view/editor-view.d.ts +55 -0
  264. package/dist/view/editor-view.d.ts.map +1 -0
  265. package/dist/view/editor-view.js +143 -0
  266. package/dist/view/editor-view.js.map +1 -0
  267. package/dist/view/image-resize.d.ts +37 -0
  268. package/dist/view/image-resize.d.ts.map +1 -0
  269. package/dist/view/image-resize.js +191 -0
  270. package/dist/view/image-resize.js.map +1 -0
  271. package/dist/view/index.d.ts +15 -0
  272. package/dist/view/index.d.ts.map +1 -0
  273. package/dist/view/index.js +15 -0
  274. package/dist/view/index.js.map +1 -0
  275. package/dist/view/input-pipeline.d.ts +24 -0
  276. package/dist/view/input-pipeline.d.ts.map +1 -0
  277. package/dist/view/input-pipeline.js +226 -0
  278. package/dist/view/input-pipeline.js.map +1 -0
  279. package/dist/view/mutation-observer.d.ts +17 -0
  280. package/dist/view/mutation-observer.d.ts.map +1 -0
  281. package/dist/view/mutation-observer.js +62 -0
  282. package/dist/view/mutation-observer.js.map +1 -0
  283. package/dist/view/page-slots.d.ts +56 -0
  284. package/dist/view/page-slots.d.ts.map +1 -0
  285. package/dist/view/page-slots.js +230 -0
  286. package/dist/view/page-slots.js.map +1 -0
  287. package/dist/view/paginator.d.ts +17 -0
  288. package/dist/view/paginator.d.ts.map +1 -0
  289. package/dist/view/paginator.js +93 -0
  290. package/dist/view/paginator.js.map +1 -0
  291. package/dist/view/print.d.ts +42 -0
  292. package/dist/view/print.d.ts.map +1 -0
  293. package/dist/view/print.js +70 -0
  294. package/dist/view/print.js.map +1 -0
  295. package/dist/view/reconcile.d.ts +16 -0
  296. package/dist/view/reconcile.d.ts.map +1 -0
  297. package/dist/view/reconcile.js +158 -0
  298. package/dist/view/reconcile.js.map +1 -0
  299. package/dist/view/renderer.d.ts +31 -0
  300. package/dist/view/renderer.d.ts.map +1 -0
  301. package/dist/view/renderer.js +89 -0
  302. package/dist/view/renderer.js.map +1 -0
  303. package/dist/view/selection-sync.d.ts +35 -0
  304. package/dist/view/selection-sync.d.ts.map +1 -0
  305. package/dist/view/selection-sync.js +324 -0
  306. package/dist/view/selection-sync.js.map +1 -0
  307. package/dist/view/table-resize.d.ts +41 -0
  308. package/dist/view/table-resize.d.ts.map +1 -0
  309. package/dist/view/table-resize.js +216 -0
  310. package/dist/view/table-resize.js.map +1 -0
  311. package/package.json +93 -0
  312. package/styles/base.css +269 -0
  313. package/styles/dark.css +36 -0
  314. package/styles/light.css +13 -0
  315. package/styles/page.css +93 -0
  316. package/styles/print-a4.css +87 -0
  317. package/styles/print.css +88 -0
@@ -0,0 +1,36 @@
1
+ /* @doxi/core dark.css — variable overrides only. Apply on top of base.css. */
2
+
3
+ :root.dx-theme-dark,
4
+ .dx-theme-dark,
5
+ [data-doxiva-theme="dark"] {
6
+ --dx-color-text: #e8eaed;
7
+ --dx-color-muted: #9aa0a6;
8
+ --dx-color-bg: #202124;
9
+ --dx-color-selection: #1e3a5f;
10
+ --dx-color-accent: #8ab4f8;
11
+ --dx-color-border: #3c4043;
12
+ --dx-page-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
13
+ --dx-toolbar-bg: #292a2d;
14
+ --dx-toolbar-fg: #e8eaed;
15
+ }
16
+
17
+ /*
18
+ * Auto theme — honor the host's prefers-color-scheme when the editor root
19
+ * (or :root) carries .dx-theme-auto. base.css supplies the light defaults,
20
+ * so we only need to override when the user prefers dark.
21
+ */
22
+ @media (prefers-color-scheme: dark) {
23
+ :root.dx-theme-auto,
24
+ .dx-theme-auto,
25
+ [data-doxiva-theme="auto"] {
26
+ --dx-color-text: #e8eaed;
27
+ --dx-color-muted: #9aa0a6;
28
+ --dx-color-bg: #202124;
29
+ --dx-color-selection: #1e3a5f;
30
+ --dx-color-accent: #8ab4f8;
31
+ --dx-color-border: #3c4043;
32
+ --dx-page-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
33
+ --dx-toolbar-bg: #292a2d;
34
+ --dx-toolbar-fg: #e8eaed;
35
+ }
36
+ }
@@ -0,0 +1,13 @@
1
+ /* @doxi/core light.css — variable overrides only. Apply on top of base.css. */
2
+
3
+ :root,
4
+ .dx-theme-light {
5
+ --dx-color-text: #1a1a1a;
6
+ --dx-color-muted: #6b7280;
7
+ --dx-color-bg: #ffffff;
8
+ --dx-color-selection: #b3d7ff;
9
+ --dx-color-accent: #2563eb;
10
+ --dx-color-border: #e5e7eb;
11
+ --dx-toolbar-bg: #f9fafb;
12
+ --dx-toolbar-fg: #111827;
13
+ }
@@ -0,0 +1,93 @@
1
+ /* @doxi/core page.css — visual chrome for the paginated editor.
2
+ Apply this stylesheet ON TOP of base.css when running in paginated mode. */
3
+
4
+ :root {
5
+ --dx-page-bg: #ffffff;
6
+ --dx-page-edge: rgba(0, 0, 0, 0.08);
7
+ --dx-page-shadow: 0 1px 3px rgba(0, 0, 0, 0.08), 0 4px 12px rgba(0, 0, 0, 0.04);
8
+ --dx-page-gap: 24px;
9
+ --dx-page-host-bg: #f4f5f7;
10
+ }
11
+
12
+ .dx-page-host {
13
+ display: flex;
14
+ flex-direction: column;
15
+ align-items: center;
16
+ gap: var(--dx-page-gap);
17
+ padding: var(--dx-page-gap) 0;
18
+ background: var(--dx-page-host-bg);
19
+ min-height: 100%;
20
+ }
21
+
22
+ .dx-page {
23
+ position: relative;
24
+ background: var(--dx-page-bg);
25
+ box-shadow: var(--dx-page-shadow);
26
+ border-radius: 2px;
27
+ /* width + height set inline by the Paginator from resolved dimensions */
28
+ box-sizing: border-box;
29
+ display: grid;
30
+ grid-template-rows: auto 1fr auto;
31
+ }
32
+
33
+ .dx-page-header,
34
+ .dx-page-footer {
35
+ font-size: 12px;
36
+ color: var(--dx-color-muted);
37
+ padding: 8px 96px;
38
+ min-height: 24px;
39
+ outline: none;
40
+ }
41
+ .dx-page-header[contenteditable="true"]:focus,
42
+ .dx-page-footer[contenteditable="true"]:focus {
43
+ outline: 1px dashed var(--dx-color-accent);
44
+ outline-offset: -1px;
45
+ }
46
+ .dx-page-header[contenteditable="true"]:empty::before,
47
+ .dx-page-footer[contenteditable="true"]:empty::before {
48
+ content: attr(data-placeholder);
49
+ color: var(--dx-color-muted);
50
+ opacity: 0.6;
51
+ pointer-events: none;
52
+ }
53
+
54
+ .dx-page-content {
55
+ position: relative;
56
+ /* padding set inline by the Paginator from resolved margins */
57
+ overflow: hidden;
58
+ }
59
+
60
+ .dx-page-number {
61
+ position: absolute;
62
+ bottom: 12px;
63
+ right: 16px;
64
+ font-size: 11px;
65
+ color: var(--dx-color-muted);
66
+ font-family: var(--dx-font-family);
67
+ user-select: none;
68
+ }
69
+
70
+ .dx-page-var {
71
+ display: inline;
72
+ font-variant-numeric: tabular-nums;
73
+ }
74
+ .dx-page-var[data-kind="pageNumber"],
75
+ .dx-page-var[data-kind="totalPages"] {
76
+ /* nothing extra; inherits page-header/footer styling */
77
+ }
78
+
79
+ @media print {
80
+ .dx-page-host {
81
+ background: white;
82
+ padding: 0;
83
+ gap: 0;
84
+ }
85
+ .dx-page {
86
+ box-shadow: none;
87
+ border-radius: 0;
88
+ page-break-after: always;
89
+ }
90
+ .dx-page-number {
91
+ display: none;
92
+ }
93
+ }
@@ -0,0 +1,87 @@
1
+ /* @doxi/core print-a4.css — A4 variant of print.css.
2
+ *
3
+ * Same as print.css but with `@page { size: A4 }`. Consumers pick exactly
4
+ * one of the two files (or write their own override that comes after the
5
+ * imported file). We can't use CSS variables in @page rules in current
6
+ * browsers, so the consumer-side decision is which file to import.
7
+ */
8
+
9
+ @page {
10
+ size: A4;
11
+ margin: 0;
12
+ }
13
+
14
+ @media print {
15
+ html, body {
16
+ background: #ffffff !important;
17
+ margin: 0 !important;
18
+ padding: 0 !important;
19
+ }
20
+
21
+ /* Hide editor chrome: toolbars, app headers, hover affordances. */
22
+ .dx-toolbar,
23
+ .dx-toolbar-popover,
24
+ .app-header,
25
+ .app-subtitle,
26
+ .app-shell > header {
27
+ display: none !important;
28
+ }
29
+
30
+ /* Hide the on-screen-only "Page break" label. */
31
+ .dx-page-break::after {
32
+ display: none !important;
33
+ }
34
+
35
+ /* Hide the on-screen page-number badge — printed page numbers come from
36
+ * header/footer slot {pageNumber} variables once Tracks A+B land. */
37
+ .dx-page-number {
38
+ display: none !important;
39
+ }
40
+
41
+ /* Strip on-screen page chrome (shadows, margins) so the printed page
42
+ * uses the full physical page. */
43
+ .dx-page-host {
44
+ background: none !important;
45
+ padding: 0 !important;
46
+ margin: 0 !important;
47
+ box-shadow: none !important;
48
+ }
49
+ .dx-page {
50
+ box-shadow: none !important;
51
+ border: none !important;
52
+ margin: 0 !important;
53
+ page-break-after: always !important;
54
+ break-after: page !important; /* modern browsers */
55
+ }
56
+ .dx-page:last-child {
57
+ page-break-after: auto !important;
58
+ break-after: auto !important;
59
+ }
60
+
61
+ /* Application wrapper (in example apps) shouldn't add print margins. */
62
+ .app-editor-wrap,
63
+ .app-shell {
64
+ max-width: none !important;
65
+ padding: 0 !important;
66
+ margin: 0 !important;
67
+ box-shadow: none !important;
68
+ border: none !important;
69
+ }
70
+
71
+ /* Hide the contenteditable outline. */
72
+ .dx-editor {
73
+ outline: none !important;
74
+ }
75
+
76
+ /* v0.5 audit: clear all selection-state visuals in print so the printed
77
+ * page never shows transient selection chrome that the user happened to
78
+ * leave on when triggering print. Covers table cell selection (Track 0
79
+ * shaded background + box-shadow) and image NodeSelection (outline). */
80
+ .dx-table-cell.dx-cell-selected {
81
+ background: none !important;
82
+ box-shadow: none !important;
83
+ }
84
+ .dx-image.dx-image-selected {
85
+ outline: none !important;
86
+ }
87
+ }
@@ -0,0 +1,88 @@
1
+ /* @doxi/core print.css — overrides for `@media print` so on-screen
2
+ * pages render verbatim to PDF/print.
3
+ *
4
+ * @page sets the printed page size; default is US Letter. Consumers can
5
+ * ship `print-a4.css` (also in this directory) for A4. We can't use CSS
6
+ * variables in @page rules in current browsers, so the consumer-side
7
+ * decision is which file to import.
8
+ */
9
+
10
+ @page {
11
+ size: 8.5in 11in;
12
+ margin: 0;
13
+ }
14
+
15
+ @media print {
16
+ html, body {
17
+ background: #ffffff !important;
18
+ margin: 0 !important;
19
+ padding: 0 !important;
20
+ }
21
+
22
+ /* Hide editor chrome: toolbars, app headers, hover affordances. */
23
+ .dx-toolbar,
24
+ .dx-toolbar-popover,
25
+ .app-header,
26
+ .app-subtitle,
27
+ .app-shell > header {
28
+ display: none !important;
29
+ }
30
+
31
+ /* Hide the on-screen-only "Page break" label. */
32
+ .dx-page-break::after {
33
+ display: none !important;
34
+ }
35
+
36
+ /* Hide the on-screen page-number badge — printed page numbers come from
37
+ * header/footer slot {pageNumber} variables once Tracks A+B land. */
38
+ .dx-page-number {
39
+ display: none !important;
40
+ }
41
+
42
+ /* Strip on-screen page chrome (shadows, margins) so the printed page
43
+ * uses the full physical page. */
44
+ .dx-page-host {
45
+ background: none !important;
46
+ padding: 0 !important;
47
+ margin: 0 !important;
48
+ box-shadow: none !important;
49
+ }
50
+ .dx-page {
51
+ box-shadow: none !important;
52
+ border: none !important;
53
+ margin: 0 !important;
54
+ page-break-after: always !important;
55
+ break-after: page !important; /* modern browsers */
56
+ }
57
+ .dx-page:last-child {
58
+ page-break-after: auto !important;
59
+ break-after: auto !important;
60
+ }
61
+
62
+ /* Application wrapper (in example apps) shouldn't add print margins. */
63
+ .app-editor-wrap,
64
+ .app-shell {
65
+ max-width: none !important;
66
+ padding: 0 !important;
67
+ margin: 0 !important;
68
+ box-shadow: none !important;
69
+ border: none !important;
70
+ }
71
+
72
+ /* Hide the contenteditable outline. */
73
+ .dx-editor {
74
+ outline: none !important;
75
+ }
76
+
77
+ /* v0.5 audit: clear all selection-state visuals in print so the printed
78
+ * page never shows transient selection chrome that the user happened to
79
+ * leave on when triggering print. Covers table cell selection (Track 0
80
+ * shaded background + box-shadow) and image NodeSelection (outline). */
81
+ .dx-table-cell.dx-cell-selected {
82
+ background: none !important;
83
+ box-shadow: none !important;
84
+ }
85
+ .dx-image.dx-image-selected {
86
+ outline: none !important;
87
+ }
88
+ }