Skip to content

1.0.5

Choose a tag to compare

@JBRedcrewAdmin JBRedcrewAdmin released this 17 Mar 01:14
· 24 commits to main since this release

Release Notes

Bug Fixes

  • Text box editing: Fixed double-click to enter text box edit mode. The root cause was an infinite recursion in pane update cycles (show() → update() → show())
    that crashed the event chain, plus a focus ordering issue where setFocus(textBox) was immediately undone by selectInlineElement() calling setFocus(null). Both
    issues resolved in TextBoxPane, ImagePane, TablePane, and HyperlinkPane.
  • PDF image export: Images now render correctly in PDF exports. Previously, SVG and other non-JPEG/PNG formats silently fell back to placeholder rectangles. The
    PDF generator now converts unsupported formats to PNG via canvas before embedding.
  • Table/text box formatting round-trip: Fixed formatting runs in table cells and text boxes being deserialized as single-character entries instead of ranges. A
    bold word in a table cell now correctly survives export/import (previously only the first character retained formatting).
  • Formatting consistency: Fixed getFormattingAt() to merge overrides with defaults, preventing false run boundaries from inconsistent optional properties
    (undefined vs 'normal').
  • Demo error: Removed reference to non-existent updateTableTools function that was causing console errors on every selection change.

Document Size Optimization

  • Run-based formatting compression: Body text, table cells, and text boxes now all use a shared getCompressedRuns() method that only serializes formatting at
    change boundaries, eliminating per-character redundancy.
  • Table cell default omission: Cell properties (borders, padding, background, font, alignment, spans) are omitted from export when they match table defaults. An
    empty cell now serializes to just {} instead of ~250 bytes of redundant defaults.
  • Row/cell ID removal: Internal row and cell IDs are no longer exported since there are no cross-references in the file format. IDs are regenerated on import.
    Old exports with IDs remain backward-compatible.
  • Row default omission: Row-level properties (height, minHeight, isHeader) omitted when matching defaults.
  • Net result: A 3×3 empty table dropped from ~15KB to ~2KB. Empty documents remain at ~455 bytes.

Configurable Logging

  • Logger utility: New centralized Logger with log, warn, and error methods. log/warn only output when enabled; error always outputs.
  • Editor option: enableLogging option on EditorOptions (default: false) and runtime editor.setLogging(enabled) API.
  • Consistent prefixing: All library logs use [pc-editor:ClassName] format for easy filtering. Demo logs use [Editor Event]/[Demo] prefixes.
  • API call tracing: 33 public PCEditor methods now log their invocations when logging is enabled.

Pane Layout Improvements

  • Flexible spacer columns: All pane rows, button groups, and inline form groups include a zero-width ::after spacer that absorbs extra horizontal space, keeping
    controls at their natural width when the sidebar is widened.
  • Minimum pane width: All panes share a consistent minimum width (--pc-pane-min-width: 220px).
  • Select dropdown max width: Combo dropdowns have a max width (--pc-pane-select-max-width: 200px) preventing infinite horizontal stretch.
  • Document Settings pane: Margin controls use a 5-column grid (label, edit, label, edit, stretch) with right-aligned colon labels. Margins apply on blur instead
    of via an Apply button. Page Size and Orientation fields use a matching label-value grid layout.
  • Document Info pane: Converted to the same right-aligned colon label grid layout.

Table Row Loops

  • Unified repeating section API: createRepeatingSection() now detects when a table is being edited and automatically creates a row loop on the focused cell's
    row, instead of requiring a separate API.
  • Table pane integration: Added "Row Loop" section to the Table pane with an array field input and Create Row Loop button.

Demo App Enhancements

  • Resizable sidebar: The side panel can now be dragged horizontally to test pane layout at different widths.
  • Logging toggle: View menu item to toggle console logging on/off (demo defaults to on).
  • Export round-trip test: View menu item opens a modal that exports the document, re-imports it, exports again, and displays byte sizes and difference to verify
    serialization fidelity.