From 7f726d33d353106defd0dcc6cb9ff3873a8be52a Mon Sep 17 00:00:00 2001 From: Arthur Evans Date: Thu, 25 Jun 2020 16:06:15 -0700 Subject: [PATCH 1/4] Fixes #1177. --- docs/_api/copy_api.sh | 23 ----- docs/package-lock.json | 182 +++++++++++++--------------------------- docs/package.json | 5 +- docs/typedoc.json | 12 +++ src/lib/shady-render.ts | 3 +- src/lit-html.ts | 3 +- 6 files changed, 76 insertions(+), 152 deletions(-) delete mode 100644 docs/_api/copy_api.sh create mode 100644 docs/typedoc.json diff --git a/docs/_api/copy_api.sh b/docs/_api/copy_api.sh deleted file mode 100644 index c4985e2c55..0000000000 --- a/docs/_api/copy_api.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/bin/sh - -# Copyright (c) 2018 The Polymer Project Authors. All rights reserved. -# This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt -# The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt -# The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt -# Code distributed by Google as part of the polymer project is also -# subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt - -# This script copies the TypeScript source into a staging directory for Typedoc -# and removes the license header for typedoc-plugin-external-module-name. -SRC_DIR="../../src" -TMP_DIR="tmp" - -rm -rf $TMP_DIR -src_dirs=`find $SRC_DIR -type d -print` -for dir in $src_dirs; do - new_dir=`echo $dir | sed "s|$SRC_DIR|$TMP_DIR|"` - mkdir $new_dir -done -for ts_file in `find $SRC_DIR -name "*.ts" -print`; do - tail +14 $ts_file > `echo $ts_file | sed "s|$SRC_DIR|$TMP_DIR|"` -done diff --git a/docs/package-lock.json b/docs/package-lock.json index 821528d81c..8fd5984f0a 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -125,59 +125,6 @@ "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", "dev": true }, - "@types/events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", - "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", - "dev": true - }, - "@types/fs-extra": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-5.1.0.tgz", - "integrity": "sha512-AInn5+UBFIK9FK5xc9yP5e3TQSPNNgjHByqYcj9g5elVBnDQcQL7PlO1CIRy2gWlbwK7UPYqi7vRvFA44dCmYQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/glob": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", - "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", - "dev": true, - "requires": { - "@types/events": "*", - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/handlebars": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@types/handlebars/-/handlebars-4.1.0.tgz", - "integrity": "sha512-gq9YweFKNNB1uFK71eRqsd4niVkXrxHugqWFQkeLRJvGjnxsLr16bYtcsG4tOFwmYi0Bax+wCkbf1reUfdl4kA==", - "dev": true, - "requires": { - "handlebars": "*" - } - }, - "@types/highlight.js": { - "version": "9.12.3", - "resolved": "https://registry.npmjs.org/@types/highlight.js/-/highlight.js-9.12.3.tgz", - "integrity": "sha512-pGF/zvYOACZ/gLGWdQH8zSwteQS1epp68yRcVLJMgUck/MjEn/FBYmPub9pXT8C1e4a8YZfHo1CKyV8q1vKUnQ==", - "dev": true - }, - "@types/lodash": { - "version": "4.14.149", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.149.tgz", - "integrity": "sha512-ijGqzZt/b7BfzcK9vTrS6MFljQRPn5BFWOx8oE0GYxribu6uV+aA9zZuXI1zc/etK9E8nrgdoF2+LgUw7+9tJQ==", - "dev": true - }, - "@types/marked": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@types/marked/-/marked-0.4.2.tgz", - "integrity": "sha512-cDB930/7MbzaGF6U3IwSQp6XBru8xWajF5PV2YZZeV8DyiliTuld11afVztGI9+yJZ29il5E+NpGA6ooV/Cjkg==", - "dev": true - }, "@types/minimatch": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", @@ -190,16 +137,6 @@ "integrity": "sha512-Onhn+z72D2O2Pb2ql2xukJ55rglumsVo1H6Fmyi8mlU9SvKdBk/pUSUAiBY/d9bAOF7VVWajX3sths/+g6ZiAQ==", "dev": true }, - "@types/shelljs": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/@types/shelljs/-/shelljs-0.8.6.tgz", - "integrity": "sha512-svx2eQS268awlppL/P8wgDLBrsDXdKznABHJcuqXyWpSKJgE1s2clXlBvAwbO/lehTmG06NtEWJRkAk4tAgenA==", - "dev": true, - "requires": { - "@types/glob": "*", - "@types/node": "*" - } - }, "@zeit/schemas": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.6.0.tgz", @@ -529,6 +466,15 @@ "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", "dev": true }, + "backbone": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/backbone/-/backbone-1.4.0.tgz", + "integrity": "sha512-RLmDrRXkVdouTg38jcgHhyQ/2zjg7a8E6sz2zxfz21Hh17xDJYUHBZimVIt5fUyS8vbfpeSmTL3gUjTEvUV3qQ==", + "dev": true, + "requires": { + "underscore": ">=1.8.3" + } + }, "backo2": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", @@ -2998,9 +2944,9 @@ } }, "highlight.js": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.0.tgz", - "integrity": "sha512-A97kI1KAUzKoAiEoaGcf2O9YPS8nbDTCRFokaaeBhnqjQTvbAuAJrQMm21zw8s8xzaMtCQBtgbyGXLGxdxQyqQ==", + "version": "9.18.1", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.18.1.tgz", + "integrity": "sha512-OrVKYz70LHsnCgmbXctv/bfuvntIKDz177h0Co37DQ5jamGZLVmoCVMtjMtNZY3X9DrCcKfklHPNeA0uPZhSJg==", "dev": true }, "hosted-git-info": { @@ -3111,9 +3057,9 @@ "dev": true }, "interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true }, "invert-kv": { @@ -3409,6 +3355,12 @@ "integrity": "sha512-yV+gqbd5vaOYjqlbk16EG89xB5udgjqQF3C5FAORDg4f/IS1Yc5ERCv5e/57yBcfJYw05V5JyIXabhwb75Xxow==", "dev": true }, + "jquery": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz", + "integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg==", + "dev": true + }, "js-beautify": { "version": "1.10.3", "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.10.3.tgz", @@ -3587,6 +3539,12 @@ "yallist": "^2.1.2" } }, + "lunr": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.8.tgz", + "integrity": "sha512-oxMeX/Y35PNFuZoHp+jUj5OSEmLCaIH4KTFJh7a93cHBoFmpw2IoPs22VIz7vyO2YUnx2Tn9dzIwO2P/4quIRg==", + "dev": true + }, "luxon": { "version": "1.21.3", "resolved": "https://registry.npmjs.org/luxon/-/luxon-1.21.3.tgz", @@ -3642,9 +3600,9 @@ "dev": true }, "marked": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-0.4.0.tgz", - "integrity": "sha512-tMsdNBgOsrUophCAFQl0XPe6Zqk/uy9gnue+jIIKhykO51hxyu6uNx7zBPy0+y/WKYVZZMspV9YeXLNdKk+iYw==", + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.8.2.tgz", + "integrity": "sha512-EGwzEeCcLniFX51DhTpmTom+dSA/MG/OBUDjnWtHbEnjAH180VzUeAw+oE4+Zv+CoYBWyRlYOTR0N8SO9R1PVw==", "dev": true }, "maximatch": { @@ -5262,9 +5220,9 @@ "dev": true }, "shelljs": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz", - "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", + "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", "dev": true, "requires": { "glob": "^7.0.0", @@ -5915,60 +5873,34 @@ "dev": true }, "typedoc": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.13.0.tgz", - "integrity": "sha512-jQWtvPcV+0fiLZAXFEe70v5gqjDO6pJYJz4mlTtmGJeW2KRoIU/BEfktma6Uj8Xii7UakuZjbxFewl3UYOkU/w==", + "version": "0.17.0-3", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.17.0-3.tgz", + "integrity": "sha512-DO2djkR4NHgzAWfNbJb2eQKsFMs+gOuYBXlQ8dOSCjkAK5DRI7ZywDufBGPUw7Ue9Qwi2Cw1DxLd3reDq8wFuQ==", "dev": true, "requires": { - "@types/fs-extra": "^5.0.3", - "@types/handlebars": "^4.0.38", - "@types/highlight.js": "^9.12.3", - "@types/lodash": "^4.14.110", - "@types/marked": "^0.4.0", "@types/minimatch": "3.0.3", - "@types/shelljs": "^0.8.0", - "fs-extra": "^7.0.0", - "handlebars": "^4.0.6", - "highlight.js": "^9.0.0", - "lodash": "^4.17.10", - "marked": "^0.4.0", + "fs-extra": "^8.1.0", + "handlebars": "^4.7.2", + "highlight.js": "^9.18.0", + "lodash": "^4.17.15", + "marked": "^0.8.0", "minimatch": "^3.0.0", - "progress": "^2.0.0", - "shelljs": "^0.8.2", - "typedoc-default-themes": "^0.5.0", - "typescript": "3.1.x" - }, - "dependencies": { - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - } + "progress": "^2.0.3", + "shelljs": "^0.8.3", + "typedoc-default-themes": "0.8.0-0" } }, "typedoc-default-themes": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.5.0.tgz", - "integrity": "sha1-bcJDPnjti+qOiHo6zeLzF4W9Yic=", - "dev": true - }, - "typedoc-plugin-external-module-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/typedoc-plugin-external-module-name/-/typedoc-plugin-external-module-name-1.1.3.tgz", - "integrity": "sha512-/VMawTW4NnUUsgq0o8O37y9MmXFaOCDrH1dvDg7SZUS5ZSpUPSILVWwGJP+7g4I8vKZ5bBKZKHfPIEA4xUC+PQ==", - "dev": true - }, - "typescript": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.1.6.tgz", - "integrity": "sha512-tDMYfVtvpb96msS1lDX9MEdHrW4yOuZ4Kdc4Him9oU796XldPYF/t2+uKoX0BBa0hXXwDlqYQbXY5Rzjzc5hBA==", - "dev": true + "version": "0.8.0-0", + "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.8.0-0.tgz", + "integrity": "sha512-blFWppm5aKnaPOa1tpGO9MLu+njxq7P3rtkXK4QxJBNszA+Jg7x0b+Qx0liXU1acErur6r/iZdrwxp5DUFdSXw==", + "dev": true, + "requires": { + "backbone": "^1.4.0", + "jquery": "^3.4.1", + "lunr": "^2.3.8", + "underscore": "^1.9.1" + } }, "ua-parser-js": { "version": "0.7.17", @@ -6012,6 +5944,12 @@ "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", "dev": true }, + "underscore": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.10.2.tgz", + "integrity": "sha512-N4P+Q/BuyuEKFJ43B9gYuOj4TQUHXX+j2FqguVOpjkssLUUrnJofCcBccJSCoeturDoZU6GorDTHSvUDlSQbTg==", + "dev": true + }, "union-value": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", diff --git a/docs/package.json b/docs/package.json index 763364bc61..5d91493425 100644 --- a/docs/package.json +++ b/docs/package.json @@ -5,7 +5,7 @@ "build": "npm run build:api && npm run build:site", "build:site": "eleventy", "build:site:watch": "eleventy --watch", - "build:api": "(cd _api && sh copy_api.sh) && typedoc --name \"lit-html API\" --readme _api/readme.md --mode modules --theme _api/theme --tsconfig ../tsconfig.json --ignoreCompilerErrors --excludeNotExported --excludePrivate --out ./api --gaID UA-39334307-23 _api/tmp/lit-html.ts _api/tmp/lib/shady-render.ts", + "build:api": "typedoc ../src/lit-html.ts ../src/lib/shady-render.ts", "assets": "cp ../node_modules/prismjs/themes/prism-okaidia.css css/", "serve": "serve", "deploy": "npm run build && gcloud app deploy _site/app.yaml --project polymer-lit-html --no-promote" @@ -19,7 +19,6 @@ "markdown-it-attrs": "^3.0.1", "serve": "^11.3.0", "slugify": "^1.3.6", - "typedoc": "^0.13.0", - "typedoc-plugin-external-module-name": "^1.1.3" + "typedoc": "^0.17.0-3" } } diff --git a/docs/typedoc.json b/docs/typedoc.json new file mode 100644 index 0000000000..c9a6097ce3 --- /dev/null +++ b/docs/typedoc.json @@ -0,0 +1,12 @@ +{ + "readme": "./_api/readme.md", + "tsconfig": "../tsconfig.json", + "mode": "library", + "theme": "./_api/theme", + "excludeNotExported": true, + "excludePrivate": true, + "ignoreCompilerErrors": true, + "exclude": ["**/*test*", "**/node_modules/!(lit-html)/**", "**/test/**"], + "out": "./api", + "gaID": "UA-39334307-23" +} diff --git a/src/lib/shady-render.ts b/src/lib/shady-render.ts index f8440d8d7c..95c713cb99 100644 --- a/src/lib/shady-render.ts +++ b/src/lib/shady-render.ts @@ -16,8 +16,7 @@ * Module to add shady DOM/shady CSS polyfill support to lit-html template * rendering. See the [[render]] method for details. * - * @module shady-render - * @preferred + * @packageDocumentation */ /** diff --git a/src/lit-html.ts b/src/lit-html.ts index 98f9a1e220..47683f2e9d 100644 --- a/src/lit-html.ts +++ b/src/lit-html.ts @@ -22,8 +22,7 @@ * - [[svg]] * - [[render]] * - * @module lit-html - * @preferred + * @packageDocumentation */ /** From df5db9f89a5b9a22ec32834f634eeb5113b977a2 Mon Sep 17 00:00:00 2001 From: Arthur Evans Date: Thu, 25 Jun 2020 17:57:25 -0700 Subject: [PATCH 2/4] Fix links. --- docs/_api/readme.md | 6 +++--- docs/guide/05-creating-directives.md | 16 ++++++++-------- docs/guide/release-notes/1.2.0.md | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/_api/readme.md b/docs/_api/readme.md index 49d4dd047a..94253aaec7 100644 --- a/docs/_api/readme.md +++ b/docs/_api/readme.md @@ -6,9 +6,9 @@ Import the main lit-html functions from the [`lit-html`](./modules/lit_html.html import {render, html, svg} from 'lit-html'; ``` -- [html](./modules/lit_html.html#html) -- [svg](./modules/lit_html.html#svg) -- [render](./modules/lit_html.html#render) +- [html](./modules/_lit_html_.html#html) +- [svg](./modules/_lit_html_.html#svg) +- [render](./modules/_lit_html_.html#render) ## Directives lit-html comes with a set of directives. You can import them as individual modules from the `lit-html/directives/` folder: diff --git a/docs/guide/05-creating-directives.md b/docs/guide/05-creating-directives.md index ea773b7e82..594f180087 100644 --- a/docs/guide/05-creating-directives.md +++ b/docs/guide/05-creating-directives.md @@ -13,7 +13,7 @@ html`
However, instead of _returning_ a value to render, the directive controls what gets rendered to its location in the DOM. -Internally, lit-html uses the [`Part`](/api/interfaces/lit_html.part.html) interface to represent the dynamic DOM associated with a binding. A directive has access to the `Part` associated with its binding. For example, it can find the current value of the part and set a new value for the part. +Internally, lit-html uses the [`Part`](/api/interfaces/_lit_html_.part.html) interface to represent the dynamic DOM associated with a binding. A directive has access to the `Part` associated with its binding. For example, it can find the current value of the part and set a new value for the part. To create a directive, pass a factory function to lit-html's `directive` function: @@ -27,11 +27,11 @@ The factory function can take optional arguments for configuration and values to The returned function is called each time the part is rendered. The `part` argument is a `Part` object with an API for directly managing the dynamic DOM associated with expressions. Each type of binding has its own specific Part object: -* [`NodePart`](/api/classes/lit_html.nodepart.html) for content bindings. -* [`AttributePart`](/api/classes/lit_html.attributepart.html) for standard attribute bindings. -* [`BooleanAttributePart`](/api/classes/lit_html.booleanattributepart.html) for boolean attribute bindings. -* [`EventPart`](/api/classes/lit_html.eventpart.html) for event bindings. -* [`PropertyPart`](/api/classes/lit_html.propertypart.html) for property bindings. +* [`NodePart`](/api/classes/_lit_html_.nodepart.html) for content bindings. +* [`AttributePart`](/api/classes/_lit_html_.attributepart.html) for standard attribute bindings. +* [`BooleanAttributePart`](/api/classes/_lit_html_.booleanattributepart.html) for boolean attribute bindings. +* [`EventPart`](/api/classes/_lit_html_.eventpart.html) for event bindings. +* [`PropertyPart`](/api/classes/_lit_html_.propertypart.html) for property bindings. Each of these part types implement a common API: @@ -166,7 +166,7 @@ const statefulDirective = directive(() => (part) => { Sometimes you want a directive to manage multiple nested parts. For example, a directive that renders a list of items (like `repeat`) might create a nested part for each item. Keeping separate parts lets you manipulate them efficiently: for example, you can change the value of a single part without re-rendering the entire list. -To create nested parts, you construct [`NodePart`](/api/classes/lit_html.nodepart.html) instances and associate them with specific locations in the DOM. The section of DOM controlled by a given `NodePart` needs to be delimited by static nodes that serve as markers. (lit-html usually uses comment nodes for these markers.) +To create nested parts, you construct [`NodePart`](/api/classes/_lit_html_.nodepart.html) instances and associate them with specific locations in the DOM. The section of DOM controlled by a given `NodePart` needs to be delimited by static nodes that serve as markers. (lit-html usually uses comment nodes for these markers.) Diagram showing a tree of DOM nodes and a NodePart object. The DOM tree consists of a parent node and several child nodes, with two of the child nodes identified as 'marker nodes.' The NodePart object has a startNode property, which points to the first marker node, and an endNode property, which points to the second marker node. Child nodes between the two marker nodes are identified as 'nodes managed by NodePart.' @@ -250,4 +250,4 @@ const duplicate = directive((value) => { }); ``` -The `NodePart` class provides a number of other convenience methods, including other methods for adding nested parts, and a [`clear`](/api/classes/lit_html.nodepart.html#clear) method to remove all of the DOM associated with a part. See the [NodePart API docs](/api/classes/lit_html.nodepart.html) for details. +The `NodePart` class provides a number of other convenience methods, including other methods for adding nested parts, and a [`clear`](/api/classes/_lit_html_.nodepart.html#clear) method to remove all of the DOM associated with a part. See the [NodePart API docs](/api/classes/_lit_html_.nodepart.html) for details. diff --git a/docs/guide/release-notes/1.2.0.md b/docs/guide/release-notes/1.2.0.md index 7e1e5be758..b23f2bce56 100644 --- a/docs/guide/release-notes/1.2.0.md +++ b/docs/guide/release-notes/1.2.0.md @@ -63,7 +63,7 @@ html` `unsaveSVG` is the missing partner of [`unsafeHTML`](../template-reference#unsafehtml). It lets you render a frangment of SVG text as SVG elements rather than text. As with `unsafeHTML` this directive not safe to use with user-provided input, since if the input has `