archaeopteryx 3.27.0 → 3.28.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.
package/README.md CHANGED
@@ -1213,6 +1213,86 @@ for the tree it moves to, and so does a new launch. A launch that is rejected
1213
1213
  while an earlier viewer is still on the page leaves that viewer's report as
1214
1214
  it was and adds one line saying what failed.
1215
1215
 
1216
+ ### The host page's stylesheet
1217
+
1218
+ The viewer is drawn inside your page, in your page's document, so your
1219
+ stylesheet applies to it. A rule written for something else can reach it: on
1220
+ one site, `.Phylogeny svg { background: #FFFFFF }`, written when the tree was
1221
+ the only svg in that box, put a white square behind every icon of the control
1222
+ panel. The viewer now says for itself what it used to leave to the page:
1223
+
1224
+ * **Everything it puts on the page starts from the browser's own defaults.**
1225
+ The control panel, the dialogs, the menus, the tooltip, the "working" card
1226
+ and the alignment bar are untouched by rules written with element names
1227
+ only, whichever stylesheet comes first: a reset's `* { box-sizing:
1228
+ border-box }`, a framework's `label { font-weight: 700 }` or `button { font:
1229
+ inherit }`, `svg { fill: currentColor }`. And a sheet's `:focus { outline:
1230
+ 0 }` no longer takes the keyboard focus ring off the viewer's controls.
1231
+ * **What your page hands down by inheritance stops at the viewer.** A page set
1232
+ in capitals, centred, or in a serif face does not set the panel, the dialogs
1233
+ or the tree that way.
1234
+ * **The tree's svg is `svg.aptx-tree`.** Its size and its font are stated
1235
+ inline (a page whose only svgs were icons, with `svg { width: 24px; height:
1236
+ 24px }`, drew the tree 24 px square), and its background is a rectangle the
1237
+ viewer draws, not the svg's own.
1238
+ * **Every shape states its paint as an inline style**, in the tree and in the
1239
+ viewer's other svgs: its fill, its stroke, its opacity, a label's alignment.
1240
+ An svg *attribute* gives way to any rule of the page, so a chart's
1241
+ stylesheet written for a page with one chart on it, `path { fill: none;
1242
+ stroke: #000 }` or `text { font: 10px sans-serif }`, used to repaint the
1243
+ tree: its branches, its labels, its legends. What a shape does not state it
1244
+ has from its parent, whatever the page says of a `path`, a `rect` or a
1245
+ `text`: bare, in a state (`rect:hover`), or inside a container of yours
1246
+ (`.chart text`). Nor does a page-wide `* { transition: all .3s }` make the
1247
+ tree ease behind its own redraws.
1248
+ * **The icons, the logo and the clock plot** are untouched by a rule for a
1249
+ bare `svg` inside a container of yours (`.my-box svg { ... }`).
1250
+
1251
+ What still follows the page, on purpose: `direction`, `cursor`, `visibility`
1252
+ and `pointer-events` on whatever contains the viewer.
1253
+
1254
+ **To restyle the viewer deliberately, name its classes**, inside a container
1255
+ of your own so that your rule outweighs the viewer's: `.my-page svg.aptx-tree
1256
+ { border: 1px solid #ccc }` (the border fits inside the tree's size),
1257
+ `.my-page .aptx-panel { ... }`.
1258
+
1259
+ **A shape's colours and strokes are not restyled by CSS any more.** Through
1260
+ 3.27.0 a rule such as `#tree path { stroke-width: 2px }` thickened the
1261
+ branches, because their width was an attribute; an inline style gives way to
1262
+ nothing but `!important`. Colours, widths and fonts are what the
1263
+ configuration and the control panel are for; a rule that must override them
1264
+ says `!important`.
1265
+
1266
+ **What the viewer cannot do from inside your document:**
1267
+
1268
+ * A rule that names **a class of yours and an element** (`.content button {
1269
+ text-transform: uppercase }`, `.page label { ... }`) still reaches the
1270
+ viewer's buttons, labels and fields wherever the viewer's own rule for that
1271
+ control does not state the same property: the defaults above weigh less than
1272
+ one class, or they would outweigh the viewer's own rules. If your page has
1273
+ such rules around the viewer, scope them to your own content.
1274
+ * For a shape it takes more: a rule with two classes of yours, or an `id`,
1275
+ still reaches what a shape does not state itself (`.page .chart text {
1276
+ letter-spacing: 1px }` spaces the tree's labels).
1277
+ * Where a shape is, and how large, is still in its attributes (`x`, `y`,
1278
+ `width`, `d`, `r`, `transform`): a rule such as `rect { width: 100% }` or
1279
+ `circle { r: 4px }` moves or resizes the viewer's shapes too.
1280
+ * Nothing outranks a rule scoped by an `id`, or marked `!important`.
1281
+
1282
+ A file is another matter: it has no page around it. In an exported SVG file a
1283
+ shape's colours, strokes, opacities and text alignment are attributes
1284
+ (`fill="..."`, `stroke-opacity="..."`), the form every program that opens an
1285
+ svg reads; only fonts and `paint-order` are in `style`. Its colours are those
1286
+ SVG 1.1 has: what is `transparent` on the page is `none` in the file, and a
1287
+ translucent colour is the colour with a `fill-opacity` or `stroke-opacity`
1288
+ (Inkscape 1.1 draws `transparent` and `rgba(...)` as black).
1289
+
1290
+ `test/browser/host_css.html` launches the viewer under real stylesheets (the
1291
+ BV-BRC website's, Bootstrap 3 and 5, Tailwind's reset, and a sheet of single
1292
+ rules of kinds found on real pages), each added after the viewer's own, and
1293
+ fails on any difference from a launch in a clean page: in what any element
1294
+ computes to, and in where it sits.
1295
+
1216
1296
  ### Downloads
1217
1297
 
1218
1298
  The panel's **Download** section (folded until you open it) holds the choices
@@ -1263,6 +1343,11 @@ tree, with the same columns, and a table that joins back onto the tree as
1263
1343
  A full-size PDF taller or wider than 200 inches (14,400 pt, the PDF page
1264
1344
  limit) is scaled onto the largest page; it is vector, so nothing is lost.
1265
1345
 
1346
+ **The SVG file is written for programs other than a browser**: a shape's
1347
+ paint is in attributes, and its colours are those SVG 1.1 has (no
1348
+ `transparent`, no `rgba(...)`, which Inkscape 1.1 draws as black). See [The
1349
+ host page's stylesheet](#the-host-pages-stylesheet).
1350
+
1266
1351
  Newick and Nexus files usually carry branch support as a bare internal label
1267
1352
  (`)100:0.05`). Archaeopteryx.js recognises those automatically and treats them
1268
1353
  as confidence values, so support-based features work without any setup. If your
@@ -1600,7 +1685,7 @@ All 118 of them, alphabetically:
1600
1685
  | `allowManualNodeSelection` | Renamed to `enableManualNodeSelection`. |
1601
1686
  | `backgroundColorDefault` | The background is fixed. |
1602
1687
  | `backgroundColorForPrintExportDefault` | The export background is fixed. |
1603
- | `border` | Style the tree's svg with CSS instead. |
1688
+ | `border` | Style the tree's svg with CSS instead: it is `svg.aptx-tree` (a rule for a bare `svg` reaches the panel's icons too). |
1604
1689
  | `branchColorDefault` | The default branch colour is fixed. |
1605
1690
  | `branchDataFontSize` | Font size is fixed at launch (derived: 2px smaller than labels, floor 6px) and changed only via the in-panel Font slider — not a launch config key. |
1606
1691
  | `branchWidthDefault` | Branch width follows the size of the tree. |