api-viewer-element
api-viewer-element copied to clipboard
cssProperties ignore custom ordering in its JSON value array
Steps to Reproduce the Problem
- open https://WebPDF.pro/:/0/API.html
- select
<pdf-page>
from top right (ππ») - view
- Properties βοΈ (render in the file order)
- Events βοΈ (render in the file order)
- CSS Custom Properties β
given and expected order:--scale
,--width
,--height
render in the following order:
API.json
{
"version": 1,
"tags": [
{
"name": "script",
"description": "<br><strong><a>script src=<u>\"//webpdf.pro/<pdf>\"</u> type=<u>module</u> ium</a></strong><br> enables Web<strong>PDF</strong>.<em>pro</em> elements on a web page.",
"properties": [
{ "name": "src", "attribute": "src", "type": "URL", "description": "<code>\"//webpdf.pro/<pdf>\"</code> βοΈ<br><br>The source is fixed and backed by a β
CDN.<br>We assume including web pages use <code>HTTPS</code>.<h5>On <code>HTTP</code>-only Web Pages</h5><p><code>\"<u>https:</u>//webpdf.pro/<pdf>\"</code> is required.</p>" },
{ "name": "ium", "attribute": "ium", "type": "boolean", "description": "<a>script src=\"βοΈ\" type=module <strong>ium</strong></a> |<br><a>script src=\"βοΈ\" type=module <strong>β</strong></a><br><br>Use a more accurate engine for rendering pages by default.<h5>Notes</h5><p>Requires files to be completely loaded before processing.</p><h5>π Release</h5><p><code>2021-06-13</code> β coming soon!</p>" },
{ "name": "measure", "attribute": "measure", "type": "boolean π§ͺ", "description": "<a>script src=\"οΈοΈβοΈ\" type=module <strong>measure</strong></a> |<br><a>script src=\"βοΈ\" type=module <strong>β³</strong></a><br><br><code>performance.measure()</code> some operations.<h5>Get Entries</h5><p><code>performance.getEntriesByType('measure').filter(m => m.name.startsWith('ππ'))</code></p>" }
]
},
{
"name": "pdf-file",
"description": "<br><strong><a>pdf-file</a></strong> element embeds a PDF file.<br><a>pdf-file id src password</a><code>.save()</code>",
"properties": [
{ "name": "src", "attribute": "src", "type": "URL", "description": "The PDF file URL.<h5>Events</h5><p>β‘<code>load</code>β¦<code>error</code></p>" },
{ "name": "data", "type": "π Uint8Array", "description": "The PDF file bytes.<br><br>π get: without user changes.<br>β¬ set: load a file from bytes.<h5>Events</h5><p>β‘<code>load</code>β¦<code>error</code></p>" },
{ "name": "saveData()", "type": "οΈπ Uint8Array", "description": "Save the PDF file bytes with user changes." },
{ "name": "save(name?)", "type": "π File", "description": "Save a copy of the PDF file with user changes." },
{ "name": "name", "type": "string", "description": "<a>pdf-file <strong>src</strong></a> <u style=\"text-decoration: 2px underline; text-decoration-color: var(--ave-accent-color);\">file name</u> part.<br><code><a>pdf-file src=\"β―/<u style=\"text-decoration: 2px underline; text-decoration-color: var(--ave-accent-color);\">f.pdf</u>?β―\"</a></code><br><br>β¬ set: change <a>pdf-file <strong>src</strong></a>.<h5>Events</h5><p>β‘<code>load</code>β¦<code>error</code></p>" },
{ "name": "password", "attribute": "password", "type": "string", "description": "Required if the PDF file is password-protected; ignored otherwise.<h5>Events</h5><p>β‘<code>load</code>β¦<code>error</code></p>" },
{ "name": "XFDF", "type": "{[π function]}", "description": "<code>XML Forms Data Format</code>.<br><br><code>import(string | XMLDocument)</code><br><code>export({...}?): XMLDocument</code><br><code>save(name?)</code>" },
{ "name": "pages", "type": "[<pdf-page>]", "description": "Snapshot array of all document-connected <ol><li>referencing</li><li>descendant</li></ol><a>pdf-page</a> instances.<h5>β Chain of Events</h5><p>1οΈβ£ <a>pdf-file</a>β‘<code>error</code>β¦<code>load</code> can trigger<br>2οΈβ£ <a>pdf-page</a>β‘<code>error</code>β¦<code>load</code>ββ‘<code>render</code><br>for all document-connected pages of a file.</p>" }
],
"events": [
{ "name": "load", "description": "Fired on load. Bubbles.<h5>Properties</h5><p><code>target</code> : <code><pdf-file></code></p>" },
{ "name": "error", "description": "Fired on error. Bubbles.<h5>Properties</h5><p><code>target</code> : <code><pdf-file></code><br><code>detail</code> : <code>error</code></p>" }
]
},
{
"name": "pdf-page",
"description": "<br><strong><a>pdf-page</a></strong> element embeds a PDF page.<br><a>pdf-page of no scale rotation svg</a>",
"properties": [
{ "name": "of", "attribute": "of", "type": "id", "description": "<a>pdf-file <strong>id</strong></a> reference.<br><h5>Events</h5><p>β‘<code>error</code>β¦<code>load</code>ββ‘<code>render</code></p>" },
{ "name": "no", "attribute": "no", "type": "number", "default": "+1", "description": "<code>β― | -1 | +1 | β―</code><br><br>Page number.<br><span style=\"opacity: .5\">If negative, count from file end.</span><h5>Events</h5><p>β‘<code>error</code>β¦<code>load</code>ββ‘<code>render</code></p>" },
{ "name": "scale", "attribute": "scale", "type": "number", "default": "1.0", "description": "<code>β― | 0.9 | 1.1 | β―</code><br><br>Image scale.<h5>Events</h5><p>β‘<code>render</code></p>" },
{ "name": "rotation", "attribute": "rotation", "type": "number", "default": "π??0", "description": "<code> +90 | +180 | +270</code> β©<br><code>-270 | -180 | -90</code> βͺ<br><br>Rotate viewport at right angles.<h5>Notes</h5><p>Other multiples of <code>Β±90</code> get normalized.</p><h5>Events</h5><p>β‘<code>render</code>β¦<code>error</code></p>" },
{ "name": "noText", "attribute": "no-text", "type": "boolean", "default": false, "description": "Omit text layer used for selections and search π.<h5>Events</h5><p>β‘<code>render</code></p>" },
{ "name": "noAnno", "attribute": "no-anno", "type": "boolean", "default": false, "description": "Omit annotation/form layer.<h5>Events</h5><p>β‘<code>render</code></p>" },
{ "name": "canvas", "attribute": "canvas", "type": "string", "description": "<a>pdf-page</a>: use more accurate renderingΒΉ<br><a>pdf-page canvas=.js</a>: use less accurate rendering<h5>Notes</h5><p>ΒΉ requires <a>script src=\"βοΈ\" type=module <strong>ium</strong></a>.</p><h5>Events</h5><p>β‘<code>render</code></p>" },
{ "name": "svg", "attribute": "svg", "type": "boolean", "default": false, "description": "π§ͺ Use <a>svg</a> for vector rendering.<br><span style=\"opacity: .5\">If unset, use <a>canvas</a> for raster rendering.</span><h5>Events</h5><p>β‘<code>render</code></p>" },
{ "name": "file", "type": "<pdf-file>", "description": "Referenced or ancestor <a>pdf-file</a>." }
],
"cssProperties": [
{ "name": "--scale", "type": "<number>", "default": "1.0", "description": "Image scale = <a>pdf-page <strong>scale</strong></a>.<h5>π‘ Use for Resolution</h5><p><code>pdf-page { width: calc(var(--width) / var(--scale)); }</code></p><h5>Notes</h5><p>Value is not used internally.</p>" },
{ "name": "--width", "type": "<dimension>", "description": "Image width = π Γ <a>pdf-page <strong>scale</strong></a>.<h5>Notes</h5><p>Value is not used internally.</p>" },
{ "name": "--height", "type": "<dimension>", "description": "Image height = π Γ <a>pdf-page <strong>scale</strong></a>.<h5>Notes</h5><p>Value is not used internally.</p>" }
],
"events": [
{ "name": "load", "description": "Fired on load. Bubbles.<h5>Properties</h5><p><code>target</code> : <code><pdf-page></code></p>" },
{ "name": "error", "description": "Fired on error. Bubbles.<h5>Properties</h5><p><code>target</code> : <code><pdf-page></code><br><code>detail</code> : <code>error</code></p>" },
{ "name": "render", "description": "Fired on render. Bubbles.<h5>Properties</h5><p><code>target</code> : <code><pdf-page></code></p><code>detail</code> : <code>{ all, image, text, anno }</code> (all boolean indicating which layers rendered)</p>" }
]
}
]
}
Depends on #61 as using CEM analyzer will enable us to drop the custom logic for sorting CSS custom properties.