├── .github
└── workflows
│ ├── pytest.yaml
│ └── shiny.yaml
├── .gitignore
├── .here
├── .pre-commit-config.yaml
├── .vscode
└── settings.json
├── CHANGELOG.md
├── LICENSE
├── MANIFEST.in
├── Makefile
├── README.md
├── htmltools
├── __init__.py
├── _core.py
├── _jsx.py
├── _util.py
├── _versions.py
├── lib
│ ├── react-dom
│ │ └── react-dom.production.min.js
│ └── react
│ │ └── react.production.min.js
├── libtest
│ ├── dep2
│ │ ├── td2.css
│ │ └── td2.js
│ └── testdep
│ │ ├── testdep.css
│ │ └── testdep.js
├── py.typed
├── svg.py
└── tags.py
├── pyproject.toml
├── pyrightconfig.json
├── scripts
├── generate_tags.py
└── getdeps.R
└── tests
├── __init__.py
├── __snapshots__
└── test_deps.ambr
├── assets
└── testdep-nested
│ ├── css
│ └── my-styles.css
│ └── js
│ └── my-js.js
├── test_consolidate_attrs.py
├── test_deps.py
├── test_html_document.py
├── test_is.py
├── test_jsx_tags.py
├── test_tags.py
├── test_tags_context.py
└── test_util.py
/.github/workflows/pytest.yaml:
--------------------------------------------------------------------------------
1 | name: Python package
2 |
3 | on:
4 | workflow_dispatch:
5 | push:
6 | branches: ["main"]
7 | pull_request:
8 | release:
9 | types: [published]
10 |
11 | jobs:
12 | build:
13 | runs-on: ${{ matrix.os }}
14 | strategy:
15 | matrix:
16 | python-version: ["3.12", "3.11", "3.10", "3.9"]
17 | os: [ubuntu-latest, windows-latest, macOS-latest]
18 | fail-fast: false
19 | defaults:
20 | run:
21 | shell: bash
22 |
23 | steps:
24 | - uses: actions/checkout@v4
25 | - name: Set up Python ${{ matrix.python-version }}
26 | uses: actions/setup-python@v5
27 | with:
28 | python-version: ${{ matrix.python-version }}
29 | - name: Install dependencies
30 | run: |
31 | python -m pip install --upgrade pip
32 | pip install -e ".[dev,test]"
33 | - name: Install
34 | run: |
35 | make install
36 | - name: Run unit tests
37 | run: |
38 | make test
39 | - name: pyright, flake8, black and isort
40 | run: |
41 | make check
42 | deploy:
43 | name: "Deploy to PyPI"
44 | runs-on: ubuntu-latest
45 | if: github.event_name == 'release'
46 | needs: [build]
47 | steps:
48 | - uses: actions/checkout@v4
49 | - name: "Set up Python 3.10"
50 | uses: actions/setup-python@v5
51 | with:
52 | python-version: "3.10"
53 | - name: Install dependencies
54 | run: |
55 | python -m pip install --upgrade pip
56 | pip install -e ".[dev,test]"
57 | - name: "Build Package"
58 | run: |
59 | make dist
60 |
61 | # test deploy ----
62 | - name: "Test Deploy to PyPI"
63 | uses: pypa/gh-action-pypi-publish@release/v1
64 | if: startsWith(github.event.release.name, 'TEST')
65 | with:
66 | user: __token__
67 | password: ${{ secrets.PYPI_TEST_API_TOKEN }}
68 | repository_url: https://test.pypi.org/legacy/
69 |
70 | ## prod deploy ----
71 | - name: "Deploy to PyPI"
72 | uses: pypa/gh-action-pypi-publish@release/v1
73 | if: startsWith(github.event.release.name, 'htmltools')
74 | with:
75 | user: __token__
76 | password: ${{ secrets.PYPI_API_TOKEN }}
77 |
--------------------------------------------------------------------------------
/.github/workflows/shiny.yaml:
--------------------------------------------------------------------------------
1 | name: Bleeding Edge Shiny
2 |
3 | on:
4 | push:
5 | branches: "shiny-**"
6 | pull_request:
7 |
8 | jobs:
9 | htmltools-pr:
10 | runs-on: ubuntu-latest
11 | defaults:
12 | run:
13 | shell: bash
14 |
15 | steps:
16 | - name: Checkout py-shiny@main
17 | uses: actions/checkout@v4
18 | with:
19 | repository: posit-dev/py-shiny
20 | ref: main
21 | fetch-depth: 0 # Required for shiny version
22 | - name: Setup py-shiny@main
23 | uses: posit-dev/py-shiny/.github/py-shiny/setup@main
24 | with:
25 | python-version: "3.12"
26 |
27 | - name: Checkout dev branch of py-htmltools
28 | uses: actions/checkout@v4
29 | with:
30 | path: _dev/htmltools
31 |
32 | - name: Install dev py-htmltools htmltools dependencies
33 | run: |
34 | cd _dev/htmltools
35 | pip uninstall -y htmltools
36 | pip install -e ".[dev,test]"
37 | make install
38 |
39 | - name: Check py-shiny@main
40 | uses: posit-dev/py-shiny/.github/py-shiny/check@main
41 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | # C extensions
7 | *.so
8 |
9 | # Distribution / packaging
10 | .Python
11 | env/
12 | build/
13 | develop-eggs/
14 | dist/
15 | downloads/
16 | eggs/
17 | .eggs/
18 | lib/
19 | lib64/
20 | parts/
21 | sdist/
22 | var/
23 | wheels/
24 | *.egg-info/
25 | .installed.cfg
26 | *.egg
27 |
28 | # PyInstaller
29 | # Usually these files are written by a python script from a template
30 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
31 | *.manifest
32 | *.spec
33 |
34 | # Installer logs
35 | pip-log.txt
36 | pip-delete-this-directory.txt
37 |
38 | # Unit test / coverage reports
39 | htmlcov/
40 | .tox/
41 | .coverage
42 | .coverage.*
43 | .cache
44 | nosetests.xml
45 | coverage.xml
46 | *.cover
47 | .hypothesis/
48 | .pytest_cache/
49 |
50 | # Translations
51 | *.mo
52 | *.pot
53 |
54 | # Django stuff:
55 | *.log
56 | local_settings.py
57 |
58 | # Flask stuff:
59 | instance/
60 | .webassets-cache
61 |
62 | # Scrapy stuff:
63 | .scrapy
64 |
65 | # Sphinx documentation
66 | docs/_build/
67 |
68 | # PyBuilder
69 | target/
70 |
71 | # Jupyter Notebook
72 | .ipynb_checkpoints
73 |
74 | # pyenv
75 | .python-version
76 |
77 | # celery beat schedule file
78 | celerybeat-schedule
79 |
80 | # SageMath parsed files
81 | *.sage.py
82 |
83 | # dotenv
84 | .env
85 |
86 | # virtualenv
87 | .venv
88 | venv/
89 | ENV/
90 |
91 | # Spyder project settings
92 | .spyderproject
93 | .spyproject
94 |
95 | # Rope project settings
96 | .ropeproject
97 |
98 | # mkdocs documentation
99 | /site
100 |
101 | # mypy
102 | .mypy_cache/
103 |
104 | typings/
105 |
--------------------------------------------------------------------------------
/.here:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/posit-dev/py-htmltools/ddbb4993672489c3ed62bf80867ebff20a42162c/.here
--------------------------------------------------------------------------------
/.pre-commit-config.yaml:
--------------------------------------------------------------------------------
1 | repos:
2 | - repo: https://github.com/psf/black
3 | rev: "24.2.0"
4 | hooks:
5 | - id: black
6 | language_version: python3
7 | exclude: ^tests/snapshots/
8 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "files.trimTrailingWhitespace": true,
3 | "files.insertFinalNewline": true,
4 | "python.formatting.provider": "black",
5 | "python.linting.flake8Enabled": true,
6 | "editor.tabSize": 2,
7 | "files.encoding": "utf8",
8 | "files.eol": "\n",
9 | "[python]": {
10 | "editor.formatOnSave": true,
11 | "editor.tabSize": 4,
12 | "editor.codeActionsOnSave": {
13 | "source.organizeImports": "explicit"
14 | },
15 | },
16 | "isort.args":["--profile", "black"],
17 | "editor.rulers": [
18 | 88
19 | ],
20 | "files.exclude": {
21 | "**/__pycache__": true,
22 | "build/**": true
23 | },
24 | "autoDocstring.guessTypes": false,
25 | "search.exclude": {
26 | "build/**": true
27 | },
28 | }
29 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Change Log for htmltools (for Python)
2 |
3 | All notable changes to htmltools for Python will be documented in this file.
4 |
5 | The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6 | and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7 |
8 | ## [0.6.0] 2024-10-29
9 |
10 | ### Breaking changes
11 |
12 | * `HTML` no longer inherits from `str`. It now inherits from `collections.UserString`. This was done to avoid confusion between `str` and `HTML` objects. (#86)
13 |
14 | * `TagList` no longer inherits from `list`. It now inherits from `collections.UserList`. This was done to avoid confusion between `list` and `TagList` objects. (#97)
15 |
16 | * `Tag` and `TagList`'s method `.get_html_string()` now both return `str` instead of `HTML`. (#86)
17 |
18 | * Strings added to `HTML` objects, now return `HTML` objects. E.g. `HTML_value + str_value` and `str_value + HTML_value` both return `HTML` objects. To maintain a `str` result, call `str()` on your `HTML` objects before adding them to other strings values. (#86)
19 |
20 | * Items added to `TagList` objects, now return `TagList` objects. E.g. `TagList_value + arr_value` and `arr_value + TagList_value` both return new `TagList` objects. To maintain a `list` result, call `list()` on your `TagList` objects before combining them to other list objects. (#97)
21 |
22 | ### New features
23 |
24 | * Exported `ReprHtml` protocol class. If an object has a `_repr_html_` method, then it is of instance `ReprHtml`. (#86)
25 |
26 | * Exported `is_tag_node()` and `is_tag_child()` functions that utilize `typing.TypeIs` to narrow `TagNode` and `TagChild` type variables, respectively. (#86)
27 |
28 | * Exported `consolidate_attrs(*args, **kwargs)` function. This function will combine the `TagAttrs` (supplied in `*args`) with `TagAttrValues` (supplied in `**kwargs`) into a single `TagAttrs` object. In addition, it will also return all `*args` that are not dictionary as a list of unaltered `TagChild` objects. (#86)
29 |
30 | * The `Tag` method `.add_style(style=)` added support for `HTML` objects in addition to `str` values. (#86)
31 |
32 | ### Bug fixes
33 |
34 | * Fixed an issue with `HTMLTextDocument()` returning extracted `HTMLDependency()`s in a non-determistic order. (#95)
35 |
36 | ## [0.5.3] 2024-07-18
37 |
38 | * HTML tags in docstrings are now escaped. (#90)
39 |
40 | ## [0.5.2] 2024-05-23
41 |
42 | * The `HTMLDependency.copy()` method can now correctly copy folders in depenendencies that both include directories and have `all_files=True`. (#87)
43 |
44 | ## [0.5.1] 2023-12-18
45 |
46 | * `Tag` objects can now be used as context managers, as in `with tags.div():`. When used this way, then inside the `with` block, `sys.displayhook` is replaced with a function which adds items as children to the `Tag`. This is meant to be used with Shiny Express, Quarto, or Jupyter. (#76)
47 |
48 | * Added a function `wrap_displayhook_handler()`. This alliows displayhooks to delegate their logic for handling various kinds of objects (like `Tag` objects and objects with a `_repr_html()`) to this function. (#77)
49 |
50 |
51 | ## [0.5.0] 2023-12-07
52 |
53 | * Objects with a `_repr_html_` method can now appear as children of `Tag`/`TagList` objects. (#74)
54 |
55 | * Changed the type annotation of `_add_ws` from `bool` to `TagAttrValue`. This makes it easier to write functions which call `Tag` functions and pass along `**kwargs`. (#67)
56 |
57 | * Changed the type annotation of `collapse_` from `str` to `str | float | None`. This makes it easier to write calls to `css()` pass along `**kwargs`. (#68)
58 |
59 | * Enhanced the type definition of `TagAttrs` to include `TagAttrDict`, the type of a `Tag`'s `attrs` property. (#55)
60 |
61 | * For `HTMLTextDocument` objects, deduplicate HTML dependencies. (#72)
62 |
63 | * Switched from `setup.cfg` and `setup.py` to `pyproject.toml`. (#73)
64 |
65 |
66 | ## [0.4.1] 2023-10-30
67 |
68 | * Fixed deserialization of JSON HTML dependencies when they contained newline characters. (#65)
69 |
70 |
71 | ## [0.4.0] 2023-10-30
72 |
73 | * Added `HTMLTextDocument` class, which takes as input a string representation of an HTML document. (#61)
74 |
75 | * Added `htmltools.html_dependency_render_mode`. If this is set to `"json"`, then `HTMLDependency` objects will be rendered as JSON inside of `
324 | """
325 |
326 | def create_tag(
327 | *args: TagNode,
328 | **kwargs: TagAttrValue,
329 | ) -> JSXTag:
330 | return JSXTag(name, *args, allowedProps=allowedProps, **kwargs)
331 |
332 | create_tag.__name__ = name
333 |
334 | return create_tag
335 |
336 |
337 | # --------------------------------------------------------
338 | # jsx expressions
339 | # --------------------------------------------------------
340 | class jsx(str):
341 | """
342 | Mark a string as a JSX expression.
343 |
344 | Example
345 | -------
346 | >>> Foo = JSXTag("Foo")
347 | >>> Foo(prop = "A string", jsxProp = jsx("() => console.log('here')"))
348 |
358 | """
359 |
360 | def __new__(cls, *args: str) -> "jsx":
361 | return super().__new__( # pyright: ignore[reportGeneralTypeIssues]
362 | cls, "\n".join(args)
363 | )
364 |
365 | # jsx() + jsx() should return jsx()
366 | def __add__(self, other: "str | jsx") -> str:
367 | res = str.__add__(self, other)
368 | return jsx(res) if isinstance(other, jsx) else res
369 |
370 |
371 | def _lib_dependency(pkg: str, script: ScriptItem) -> HTMLDependency:
372 | return HTMLDependency(
373 | name=pkg,
374 | version=versions[pkg],
375 | source={"package": "htmltools", "subdir": "lib/" + pkg},
376 | script=script,
377 | )
378 |
--------------------------------------------------------------------------------
/htmltools/_util.py:
--------------------------------------------------------------------------------
1 | from __future__ import annotations
2 |
3 | import hashlib
4 | import importlib
5 | import os
6 | import re
7 | import tempfile
8 | from contextlib import closing
9 | from http.server import SimpleHTTPRequestHandler
10 | from socket import socket
11 | from socketserver import TCPServer
12 | from threading import Thread
13 | from typing import Any, Hashable, Iterable, NamedTuple, Optional, TypeVar, Union
14 |
15 | T = TypeVar("T")
16 |
17 | HashableT = TypeVar("HashableT", bound=Hashable)
18 |
19 | __all__ = (
20 | "css",
21 | "html_escape",
22 | )
23 |
24 |
25 | def css(
26 | collapse_: str | float | None = "",
27 | **kwargs: str | float | None,
28 | ) -> Optional[str]:
29 | """
30 | CSS string helper
31 |
32 | Convenience function for building CSS style declarations (i.e. the string that goes
33 | into a style attribute, or the parts that go inside curly braces in a full
34 | stylesheet).
35 |
36 | Parameters
37 | ----------
38 | collapse_
39 | String to use to collapse properties into a single string; likely ``""`` (the
40 | default) for style attributes, and either ``"\n"`` or ``None`` for style blocks.
41 | **kwargs
42 | Named style properties, where the name is the property name and the argument is
43 | the property value.
44 |
45 | Returns
46 | -------
47 | :
48 | A string of CSS style declarations, or ``None`` if no properties were given.
49 |
50 | Example
51 | -------
52 | >>> from htmltools import css
53 | >>> css(font_size = "12px", backgroundColor = "red")
54 | 'font-size:12px;background-color:red;'
55 |
56 | Note
57 | ----
58 | CSS uses '-' (minus) as a separator character in property names, which isn't allowed
59 | in Python's keyword arguments. This function allows you to use '_' (underscore) as a
60 | separator and/or camelCase notation instead.
61 | """
62 | # Note that _add_ws is marked as a TagAttrValue for the sake of static type
63 | # checking, but it must in fact be a bool. This is due to limitations in
64 | # Python's type system when passing along **kwargs.
65 | # Similar to https://github.com/posit-dev/py-htmltools/pull/67
66 | if not isinstance(collapse_, str):
67 | raise TypeError("`collapse_` must be of type `str`")
68 |
69 | res = ""
70 | for k, v in kwargs.items():
71 | if v is None:
72 | continue
73 | v = " ".join(v) if isinstance(v, list) else str(v)
74 | k = re.sub("_", "-", re.sub("([A-Z])", "-\\1", k).lower())
75 | res += k + ":" + v + ";" + collapse_
76 | return None if res == "" else res
77 |
78 |
79 | # Flatten a arbitrarily nested list and remove None. Does not alter input object.
80 | def flatten(x: Iterable[Union[T, None]]) -> list[T]:
81 | result: list[T] = []
82 | _flatten_recurse(x, result)
83 | return result
84 |
85 |
86 | # Having this separate function and passing along `result` is faster than defining
87 | # a closure inside of `flatten()` (and not passing `result`).
88 | def _flatten_recurse(x: Iterable[T | None], result: list[T]) -> None:
89 | from ._core import TagList
90 |
91 | for item in x:
92 | if isinstance(item, (list, tuple, TagList)):
93 | # Don't yet know how to specify recursive generic types, so we'll tell
94 | # the type checker to ignore this line.
95 | _flatten_recurse(
96 | item, # pyright: ignore[reportUnknownArgumentType]
97 | result, # pyright: ignore[reportArgumentType]
98 | )
99 | elif item is not None:
100 | result.append(item)
101 |
102 |
103 | # similar to unique() in R (set() doesn't preserve order)
104 | def unique(x: list[HashableT]) -> list[HashableT]:
105 | # This implementation requires Python 3.7+. Starting with that version, dict
106 | # order is guaranteed to be the same as insertion order.
107 | return list(dict.fromkeys(x))
108 |
109 |
110 | HTML_ESCAPE_TABLE = {
111 | "&": "&",
112 | ">": ">",
113 | "<": "<",
114 | }
115 |
116 | HTML_ATTRS_ESCAPE_TABLE = {
117 | **HTML_ESCAPE_TABLE,
118 | '"': """,
119 | "'": "'",
120 | "\r": "
",
121 | "\n": "
",
122 | }
123 |
124 |
125 | def html_escape(text: str, attr: bool = False) -> str:
126 | table = HTML_ATTRS_ESCAPE_TABLE if attr else HTML_ESCAPE_TABLE
127 | if not re.search("|".join(table), text):
128 | return text
129 | for key, value in table.items():
130 | text = text.replace(key, value)
131 | return text
132 |
133 |
134 | # Backwards compatibility with faicons 0.2.1
135 | _html_escape = html_escape
136 |
137 |
138 | # similar to base::system.file()
139 | def package_dir(package: str) -> str:
140 | with tempfile.TemporaryDirectory():
141 | pkg_file = importlib.import_module(".", package=package).__file__
142 | if pkg_file is None:
143 | raise ImportError(f"Couldn't load package {package}")
144 | return os.path.dirname(pkg_file)
145 |
146 |
147 | # Backwards compatibility with shinywidgets 0.1.4
148 | _package_dir = package_dir
149 |
150 |
151 | def hash_deterministic(s: str) -> str:
152 | """
153 | Returns a deterministic hash of the given string.
154 | """
155 | return hashlib.sha1(s.encode("utf-8")).hexdigest()
156 |
157 |
158 | class _HttpServerInfo(NamedTuple):
159 | port: int
160 | thread: Thread
161 |
162 |
163 | _http_servers: dict[str, _HttpServerInfo] = {}
164 |
165 |
166 | def ensure_http_server(path: str) -> int:
167 | server = _http_servers.get(path)
168 | if server:
169 | return server.port
170 |
171 | _http_servers[path] = start_http_server(path)
172 | return _http_servers[path].port
173 |
174 |
175 | def start_http_server(path: str) -> _HttpServerInfo:
176 | port: int = get_open_port()
177 | th: Thread = Thread(target=http_server, args=(port, path), daemon=True)
178 | th.start()
179 | return _HttpServerInfo(port=port, thread=th)
180 |
181 |
182 | def http_server(port: int, path: str):
183 | class Handler(SimpleHTTPRequestHandler):
184 | def __init__(self, *args: Any, **kwargs: Any):
185 | super().__init__(*args, directory=path, **kwargs)
186 |
187 | def log_message(
188 | self, format, *args # pyright: ignore[reportMissingParameterType]
189 | ):
190 | pass
191 |
192 | with TCPServer(("", port), Handler) as httpd:
193 | httpd.serve_forever()
194 |
195 |
196 | def get_open_port() -> int:
197 | with closing(socket()) as sock:
198 | sock.bind(("", 0))
199 | return sock.getsockname()[1]
200 |
--------------------------------------------------------------------------------
/htmltools/_versions.py:
--------------------------------------------------------------------------------
1 | versions = {"react": "17.0.2", "react-dom": "17.0.2"}
2 |
--------------------------------------------------------------------------------
/htmltools/lib/react/react.production.min.js:
--------------------------------------------------------------------------------
1 | /** @license React v17.0.2
2 | * react.production.min.js
3 | *
4 | * Copyright (c) Facebook, Inc. and its affiliates.
5 | *
6 | * This source code is licensed under the MIT license found in the
7 | * LICENSE file in the root directory of this source tree.
8 | */
9 | (function(){'use strict';(function(c,x){"object"===typeof exports&&"undefined"!==typeof module?x(exports):"function"===typeof define&&define.amd?define(["exports"],x):(c=c||self,x(c.React={}))})(this,function(c){function x(a){if(null===a||"object"!==typeof a)return null;a=Y&&a[Y]||a["@@iterator"];return"function"===typeof a?a:null}function y(a){for(var b="https://reactjs.org/docs/error-decoder.html?invariant="+a,e=1;e>>1,f=a[c];if(void 0!==f&&0E(g,e))void 0!==h&&0>E(h,g)?(a[c]=h,a[k]=e,c=k):(a[c]=g,a[d]=e,c=d);else if(void 0!==h&&0>E(h,e))a[c]=h,a[k]=e,c=k;else break a}}return b}return null}function E(a,b){var e=a.sortIndex-b.sortIndex;return 0!==e?e:a.id-b.id}function P(a){for(var b=p(r);null!==b;){if(null===b.callback)F(r);else if(b.startTime<=a)F(r),b.sortIndex=b.expirationTime,O(q,b);else break;b=p(r)}}
16 | function Q(a){z=!1;P(a);if(!u)if(null!==p(q))u=!0,A(R);else{var b=p(r);null!==b&&G(Q,b.startTime-a)}}function R(a,b){u=!1;z&&(z=!1,S());H=!0;var e=g;try{P(b);for(m=p(q);null!==m&&(!(m.expirationTime>b)||a&&!T());){var c=m.callback;if("function"===typeof c){m.callback=null;g=m.priorityLevel;var f=c(m.expirationTime<=b);b=t();"function"===typeof f?m.callback=f:m===p(q)&&F(q);P(b)}else F(q);m=p(q)}if(null!==m)var d=!0;else{var n=p(r);null!==n&&G(Q,n.startTime-b);d=!1}return d}finally{m=null,g=e,H=!1}}
17 | var w=60103,ha=60106;c.Fragment=60107;c.StrictMode=60108;c.Profiler=60114;var ka=60109,la=60110,ma=60112;c.Suspense=60113;var na=60115,oa=60116;if("function"===typeof Symbol&&Symbol.for){var d=Symbol.for;w=d("react.element");ha=d("react.portal");c.Fragment=d("react.fragment");c.StrictMode=d("react.strict_mode");c.Profiler=d("react.profiler");ka=d("react.provider");la=d("react.context");ma=d("react.forward_ref");c.Suspense=d("react.suspense");na=d("react.memo");oa=d("react.lazy")}var Y="function"===
18 | typeof Symbol&&Symbol.iterator,ya=Object.prototype.hasOwnProperty,U=Object.assign||function(a,b){if(null==a)throw new TypeError("Object.assign target cannot be null or undefined");for(var e=Object(a),c=1;c=ta};d=function(){};V=function(a){0>a||125d?(a.sortIndex=
25 | c,O(r,a),null===p(q)&&a===p(r)&&(z?S():z=!0,G(Q,c-d))):(a.sortIndex=e,O(q,a),u||H||(u=!0,A(R)));return a},unstable_cancelCallback:function(a){a.callback=null},unstable_wrapCallback:function(a){var b=g;return function(){var c=g;g=b;try{return a.apply(this,arguments)}finally{g=c}}},unstable_getCurrentPriorityLevel:function(){return g},get unstable_shouldYield(){return T},unstable_requestPaint:d,unstable_continueExecution:function(){u||H||(u=!0,A(R))},unstable_pauseExecution:function(){},unstable_getFirstCallbackNode:function(){return p(q)},
26 | get unstable_now(){return t},get unstable_forceFrameRate(){return V},unstable_Profiling:null},SchedulerTracing:{__proto__:null,__interactionsRef:null,__subscriberRef:null,unstable_clear:function(a){return a()},unstable_getCurrent:function(){return null},unstable_getThreadID:function(){return++Ea},unstable_trace:function(a,b,c){return c()},unstable_wrap:function(a){return a},unstable_subscribe:function(a){},unstable_unsubscribe:function(a){}}};c.Children={map:D,forEach:function(a,b,c){D(a,function(){b.apply(this,
27 | arguments)},c)},count:function(a){var b=0;D(a,function(){b++});return b},toArray:function(a){return D(a,function(a){return a})||[]},only:function(a){if(!M(a))throw Error(y(143));return a}};c.Component=v;c.PureComponent=K;c.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=d;c.cloneElement=function(a,b,c){if(null===a||void 0===a)throw Error(y(267,a));var d=U({},a.props),e=a.key,g=a.ref,n=a._owner;if(null!=b){void 0!==b.ref&&(g=b.ref,n=L.current);void 0!==b.key&&(e=""+b.key);if(a.type&&a.type.defaultProps)var k=
28 | a.type.defaultProps;for(h in b)ea.call(b,h)&&!fa.hasOwnProperty(h)&&(d[h]=void 0===b[h]&&void 0!==k?k[h]:b[h])}var h=arguments.length-2;if(1===h)d.children=c;else if(1 Tag:
14 | """
15 | Create a `` tag.
16 |
17 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/a
18 |
19 | Parameters
20 | ----------
21 | *args
22 | Child elements to this tag.
23 | _add_ws
24 | A bool indicating whether whitespace should be added around this tag.
25 | **kwargs
26 | Attributes to this tag.
27 |
28 | Returns
29 | -------
30 | :
31 | A :class:`~htmltools.Tag` object.
32 |
33 | See Also
34 | --------
35 | * :class:`~htmltools.Tag`
36 | """
37 |
38 | return Tag("a", *args, _add_ws=_add_ws, **kwargs)
39 |
40 |
41 | def animate(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
42 | """
43 | Create a `` tag.
44 |
45 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/animate
46 |
47 | Parameters
48 | ----------
49 | *args
50 | Child elements to this tag.
51 | _add_ws
52 | A bool indicating whether whitespace should be added around this tag.
53 | **kwargs
54 | Attributes to this tag.
55 |
56 | Returns
57 | -------
58 | :
59 | A :class:`~htmltools.Tag` object.
60 |
61 | See Also
62 | --------
63 | * :class:`~htmltools.Tag`
64 | """
65 |
66 | return Tag("animate", *args, _add_ws=_add_ws, **kwargs)
67 |
68 |
69 | def animateMotion(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
70 | """
71 | Create a `` tag.
72 |
73 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/animateMotion
74 |
75 | Parameters
76 | ----------
77 | *args
78 | Child elements to this tag.
79 | _add_ws
80 | A bool indicating whether whitespace should be added around this tag.
81 | **kwargs
82 | Attributes to this tag.
83 |
84 | Returns
85 | -------
86 | :
87 | A :class:`~htmltools.Tag` object.
88 |
89 | See Also
90 | --------
91 | * :class:`~htmltools.Tag`
92 | """
93 |
94 | return Tag("animateMotion", *args, _add_ws=_add_ws, **kwargs)
95 |
96 |
97 | def animateTransform(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
98 | """
99 | Create a `` tag.
100 |
101 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/animateTransform
102 |
103 | Parameters
104 | ----------
105 | *args
106 | Child elements to this tag.
107 | _add_ws
108 | A bool indicating whether whitespace should be added around this tag.
109 | **kwargs
110 | Attributes to this tag.
111 |
112 | Returns
113 | -------
114 | :
115 | A :class:`~htmltools.Tag` object.
116 |
117 | See Also
118 | --------
119 | * :class:`~htmltools.Tag`
120 | """
121 |
122 | return Tag("animateTransform", *args, _add_ws=_add_ws, **kwargs)
123 |
124 |
125 | def circle(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
126 | """
127 | Create a `` tag.
128 |
129 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/circle
130 |
131 | Parameters
132 | ----------
133 | *args
134 | Child elements to this tag.
135 | _add_ws
136 | A bool indicating whether whitespace should be added around this tag.
137 | **kwargs
138 | Attributes to this tag.
139 |
140 | Returns
141 | -------
142 | :
143 | A :class:`~htmltools.Tag` object.
144 |
145 | See Also
146 | --------
147 | * :class:`~htmltools.Tag`
148 | """
149 |
150 | return Tag("circle", *args, _add_ws=_add_ws, **kwargs)
151 |
152 |
153 | def clipPath(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
154 | """
155 | Create a `` tag.
156 |
157 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/clipPath
158 |
159 | Parameters
160 | ----------
161 | *args
162 | Child elements to this tag.
163 | _add_ws
164 | A bool indicating whether whitespace should be added around this tag.
165 | **kwargs
166 | Attributes to this tag.
167 |
168 | Returns
169 | -------
170 | :
171 | A :class:`~htmltools.Tag` object.
172 |
173 | See Also
174 | --------
175 | * :class:`~htmltools.Tag`
176 | """
177 |
178 | return Tag("clipPath", *args, _add_ws=_add_ws, **kwargs)
179 |
180 |
181 | def defs(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
182 | """
183 | Create a `` tag.
184 |
185 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/defs
186 |
187 | Parameters
188 | ----------
189 | *args
190 | Child elements to this tag.
191 | _add_ws
192 | A bool indicating whether whitespace should be added around this tag.
193 | **kwargs
194 | Attributes to this tag.
195 |
196 | Returns
197 | -------
198 | :
199 | A :class:`~htmltools.Tag` object.
200 |
201 | See Also
202 | --------
203 | * :class:`~htmltools.Tag`
204 | """
205 |
206 | return Tag("defs", *args, _add_ws=_add_ws, **kwargs)
207 |
208 |
209 | def desc(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
210 | """
211 | Create a `` tag.
212 |
213 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/desc
214 |
215 | Parameters
216 | ----------
217 | *args
218 | Child elements to this tag.
219 | _add_ws
220 | A bool indicating whether whitespace should be added around this tag.
221 | **kwargs
222 | Attributes to this tag.
223 |
224 | Returns
225 | -------
226 | :
227 | A :class:`~htmltools.Tag` object.
228 |
229 | See Also
230 | --------
231 | * :class:`~htmltools.Tag`
232 | """
233 |
234 | return Tag("desc", *args, _add_ws=_add_ws, **kwargs)
235 |
236 |
237 | def discard(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
238 | """
239 | Create a `` tag.
240 |
241 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/discard
242 |
243 | Parameters
244 | ----------
245 | *args
246 | Child elements to this tag.
247 | _add_ws
248 | A bool indicating whether whitespace should be added around this tag.
249 | **kwargs
250 | Attributes to this tag.
251 |
252 | Returns
253 | -------
254 | :
255 | A :class:`~htmltools.Tag` object.
256 |
257 | See Also
258 | --------
259 | * :class:`~htmltools.Tag`
260 | """
261 |
262 | return Tag("discard", *args, _add_ws=_add_ws, **kwargs)
263 |
264 |
265 | def ellipse(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
266 | """
267 | Create a `` tag.
268 |
269 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/ellipse
270 |
271 | Parameters
272 | ----------
273 | *args
274 | Child elements to this tag.
275 | _add_ws
276 | A bool indicating whether whitespace should be added around this tag.
277 | **kwargs
278 | Attributes to this tag.
279 |
280 | Returns
281 | -------
282 | :
283 | A :class:`~htmltools.Tag` object.
284 |
285 | See Also
286 | --------
287 | * :class:`~htmltools.Tag`
288 | """
289 |
290 | return Tag("ellipse", *args, _add_ws=_add_ws, **kwargs)
291 |
292 |
293 | def feBlend(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
294 | """
295 | Create a `` tag.
296 |
297 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feBlend
298 |
299 | Parameters
300 | ----------
301 | *args
302 | Child elements to this tag.
303 | _add_ws
304 | A bool indicating whether whitespace should be added around this tag.
305 | **kwargs
306 | Attributes to this tag.
307 |
308 | Returns
309 | -------
310 | :
311 | A :class:`~htmltools.Tag` object.
312 |
313 | See Also
314 | --------
315 | * :class:`~htmltools.Tag`
316 | """
317 |
318 | return Tag("feBlend", *args, _add_ws=_add_ws, **kwargs)
319 |
320 |
321 | def feColorMatrix(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
322 | """
323 | Create a `` tag.
324 |
325 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feColorMatrix
326 |
327 | Parameters
328 | ----------
329 | *args
330 | Child elements to this tag.
331 | _add_ws
332 | A bool indicating whether whitespace should be added around this tag.
333 | **kwargs
334 | Attributes to this tag.
335 |
336 | Returns
337 | -------
338 | :
339 | A :class:`~htmltools.Tag` object.
340 |
341 | See Also
342 | --------
343 | * :class:`~htmltools.Tag`
344 | """
345 |
346 | return Tag("feColorMatrix", *args, _add_ws=_add_ws, **kwargs)
347 |
348 |
349 | def feComponentTransfer(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
350 | """
351 | Create a `` tag.
352 |
353 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feComponentTransfer
354 |
355 | Parameters
356 | ----------
357 | *args
358 | Child elements to this tag.
359 | _add_ws
360 | A bool indicating whether whitespace should be added around this tag.
361 | **kwargs
362 | Attributes to this tag.
363 |
364 | Returns
365 | -------
366 | :
367 | A :class:`~htmltools.Tag` object.
368 |
369 | See Also
370 | --------
371 | * :class:`~htmltools.Tag`
372 | """
373 |
374 | return Tag("feComponentTransfer", *args, _add_ws=_add_ws, **kwargs)
375 |
376 |
377 | def feComposite(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
378 | """
379 | Create a `` tag.
380 |
381 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feComposite
382 |
383 | Parameters
384 | ----------
385 | *args
386 | Child elements to this tag.
387 | _add_ws
388 | A bool indicating whether whitespace should be added around this tag.
389 | **kwargs
390 | Attributes to this tag.
391 |
392 | Returns
393 | -------
394 | :
395 | A :class:`~htmltools.Tag` object.
396 |
397 | See Also
398 | --------
399 | * :class:`~htmltools.Tag`
400 | """
401 |
402 | return Tag("feComposite", *args, _add_ws=_add_ws, **kwargs)
403 |
404 |
405 | def feConvolveMatrix(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
406 | """
407 | Create a `` tag.
408 |
409 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feConvolveMatrix
410 |
411 | Parameters
412 | ----------
413 | *args
414 | Child elements to this tag.
415 | _add_ws
416 | A bool indicating whether whitespace should be added around this tag.
417 | **kwargs
418 | Attributes to this tag.
419 |
420 | Returns
421 | -------
422 | :
423 | A :class:`~htmltools.Tag` object.
424 |
425 | See Also
426 | --------
427 | * :class:`~htmltools.Tag`
428 | """
429 |
430 | return Tag("feConvolveMatrix", *args, _add_ws=_add_ws, **kwargs)
431 |
432 |
433 | def feDiffuseLighting(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
434 | """
435 | Create a `` tag.
436 |
437 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feDiffuseLighting
438 |
439 | Parameters
440 | ----------
441 | *args
442 | Child elements to this tag.
443 | _add_ws
444 | A bool indicating whether whitespace should be added around this tag.
445 | **kwargs
446 | Attributes to this tag.
447 |
448 | Returns
449 | -------
450 | :
451 | A :class:`~htmltools.Tag` object.
452 |
453 | See Also
454 | --------
455 | * :class:`~htmltools.Tag`
456 | """
457 |
458 | return Tag("feDiffuseLighting", *args, _add_ws=_add_ws, **kwargs)
459 |
460 |
461 | def feDisplacementMap(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
462 | """
463 | Create a `` tag.
464 |
465 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feDisplacementMap
466 |
467 | Parameters
468 | ----------
469 | *args
470 | Child elements to this tag.
471 | _add_ws
472 | A bool indicating whether whitespace should be added around this tag.
473 | **kwargs
474 | Attributes to this tag.
475 |
476 | Returns
477 | -------
478 | :
479 | A :class:`~htmltools.Tag` object.
480 |
481 | See Also
482 | --------
483 | * :class:`~htmltools.Tag`
484 | """
485 |
486 | return Tag("feDisplacementMap", *args, _add_ws=_add_ws, **kwargs)
487 |
488 |
489 | def feDistantLight(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
490 | """
491 | Create a `` tag.
492 |
493 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feDistantLight
494 |
495 | Parameters
496 | ----------
497 | *args
498 | Child elements to this tag.
499 | _add_ws
500 | A bool indicating whether whitespace should be added around this tag.
501 | **kwargs
502 | Attributes to this tag.
503 |
504 | Returns
505 | -------
506 | :
507 | A :class:`~htmltools.Tag` object.
508 |
509 | See Also
510 | --------
511 | * :class:`~htmltools.Tag`
512 | """
513 |
514 | return Tag("feDistantLight", *args, _add_ws=_add_ws, **kwargs)
515 |
516 |
517 | def feDropShadow(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
518 | """
519 | Create a `` tag.
520 |
521 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feDropShadow
522 |
523 | Parameters
524 | ----------
525 | *args
526 | Child elements to this tag.
527 | _add_ws
528 | A bool indicating whether whitespace should be added around this tag.
529 | **kwargs
530 | Attributes to this tag.
531 |
532 | Returns
533 | -------
534 | :
535 | A :class:`~htmltools.Tag` object.
536 |
537 | See Also
538 | --------
539 | * :class:`~htmltools.Tag`
540 | """
541 |
542 | return Tag("feDropShadow", *args, _add_ws=_add_ws, **kwargs)
543 |
544 |
545 | def feFlood(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
546 | """
547 | Create a `` tag.
548 |
549 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feFlood
550 |
551 | Parameters
552 | ----------
553 | *args
554 | Child elements to this tag.
555 | _add_ws
556 | A bool indicating whether whitespace should be added around this tag.
557 | **kwargs
558 | Attributes to this tag.
559 |
560 | Returns
561 | -------
562 | :
563 | A :class:`~htmltools.Tag` object.
564 |
565 | See Also
566 | --------
567 | * :class:`~htmltools.Tag`
568 | """
569 |
570 | return Tag("feFlood", *args, _add_ws=_add_ws, **kwargs)
571 |
572 |
573 | def feFuncA(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
574 | """
575 | Create a `` tag.
576 |
577 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feFuncA
578 |
579 | Parameters
580 | ----------
581 | *args
582 | Child elements to this tag.
583 | _add_ws
584 | A bool indicating whether whitespace should be added around this tag.
585 | **kwargs
586 | Attributes to this tag.
587 |
588 | Returns
589 | -------
590 | :
591 | A :class:`~htmltools.Tag` object.
592 |
593 | See Also
594 | --------
595 | * :class:`~htmltools.Tag`
596 | """
597 |
598 | return Tag("feFuncA", *args, _add_ws=_add_ws, **kwargs)
599 |
600 |
601 | def feFuncB(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
602 | """
603 | Create a `` tag.
604 |
605 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feFuncB
606 |
607 | Parameters
608 | ----------
609 | *args
610 | Child elements to this tag.
611 | _add_ws
612 | A bool indicating whether whitespace should be added around this tag.
613 | **kwargs
614 | Attributes to this tag.
615 |
616 | Returns
617 | -------
618 | :
619 | A :class:`~htmltools.Tag` object.
620 |
621 | See Also
622 | --------
623 | * :class:`~htmltools.Tag`
624 | """
625 |
626 | return Tag("feFuncB", *args, _add_ws=_add_ws, **kwargs)
627 |
628 |
629 | def feFuncG(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
630 | """
631 | Create a `` tag.
632 |
633 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feFuncG
634 |
635 | Parameters
636 | ----------
637 | *args
638 | Child elements to this tag.
639 | _add_ws
640 | A bool indicating whether whitespace should be added around this tag.
641 | **kwargs
642 | Attributes to this tag.
643 |
644 | Returns
645 | -------
646 | :
647 | A :class:`~htmltools.Tag` object.
648 |
649 | See Also
650 | --------
651 | * :class:`~htmltools.Tag`
652 | """
653 |
654 | return Tag("feFuncG", *args, _add_ws=_add_ws, **kwargs)
655 |
656 |
657 | def feFuncR(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
658 | """
659 | Create a `` tag.
660 |
661 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feFuncR
662 |
663 | Parameters
664 | ----------
665 | *args
666 | Child elements to this tag.
667 | _add_ws
668 | A bool indicating whether whitespace should be added around this tag.
669 | **kwargs
670 | Attributes to this tag.
671 |
672 | Returns
673 | -------
674 | :
675 | A :class:`~htmltools.Tag` object.
676 |
677 | See Also
678 | --------
679 | * :class:`~htmltools.Tag`
680 | """
681 |
682 | return Tag("feFuncR", *args, _add_ws=_add_ws, **kwargs)
683 |
684 |
685 | def feGaussianBlur(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
686 | """
687 | Create a `` tag.
688 |
689 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feGaussianBlur
690 |
691 | Parameters
692 | ----------
693 | *args
694 | Child elements to this tag.
695 | _add_ws
696 | A bool indicating whether whitespace should be added around this tag.
697 | **kwargs
698 | Attributes to this tag.
699 |
700 | Returns
701 | -------
702 | :
703 | A :class:`~htmltools.Tag` object.
704 |
705 | See Also
706 | --------
707 | * :class:`~htmltools.Tag`
708 | """
709 |
710 | return Tag("feGaussianBlur", *args, _add_ws=_add_ws, **kwargs)
711 |
712 |
713 | def feImage(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
714 | """
715 | Create a `` tag.
716 |
717 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feImage
718 |
719 | Parameters
720 | ----------
721 | *args
722 | Child elements to this tag.
723 | _add_ws
724 | A bool indicating whether whitespace should be added around this tag.
725 | **kwargs
726 | Attributes to this tag.
727 |
728 | Returns
729 | -------
730 | :
731 | A :class:`~htmltools.Tag` object.
732 |
733 | See Also
734 | --------
735 | * :class:`~htmltools.Tag`
736 | """
737 |
738 | return Tag("feImage", *args, _add_ws=_add_ws, **kwargs)
739 |
740 |
741 | def feMerge(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
742 | """
743 | Create a `` tag.
744 |
745 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feMerge
746 |
747 | Parameters
748 | ----------
749 | *args
750 | Child elements to this tag.
751 | _add_ws
752 | A bool indicating whether whitespace should be added around this tag.
753 | **kwargs
754 | Attributes to this tag.
755 |
756 | Returns
757 | -------
758 | :
759 | A :class:`~htmltools.Tag` object.
760 |
761 | See Also
762 | --------
763 | * :class:`~htmltools.Tag`
764 | """
765 |
766 | return Tag("feMerge", *args, _add_ws=_add_ws, **kwargs)
767 |
768 |
769 | def feMergeNode(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
770 | """
771 | Create a `` tag.
772 |
773 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feMergeNode
774 |
775 | Parameters
776 | ----------
777 | *args
778 | Child elements to this tag.
779 | _add_ws
780 | A bool indicating whether whitespace should be added around this tag.
781 | **kwargs
782 | Attributes to this tag.
783 |
784 | Returns
785 | -------
786 | :
787 | A :class:`~htmltools.Tag` object.
788 |
789 | See Also
790 | --------
791 | * :class:`~htmltools.Tag`
792 | """
793 |
794 | return Tag("feMergeNode", *args, _add_ws=_add_ws, **kwargs)
795 |
796 |
797 | def feMorphology(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
798 | """
799 | Create a `` tag.
800 |
801 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feMorphology
802 |
803 | Parameters
804 | ----------
805 | *args
806 | Child elements to this tag.
807 | _add_ws
808 | A bool indicating whether whitespace should be added around this tag.
809 | **kwargs
810 | Attributes to this tag.
811 |
812 | Returns
813 | -------
814 | :
815 | A :class:`~htmltools.Tag` object.
816 |
817 | See Also
818 | --------
819 | * :class:`~htmltools.Tag`
820 | """
821 |
822 | return Tag("feMorphology", *args, _add_ws=_add_ws, **kwargs)
823 |
824 |
825 | def feOffset(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
826 | """
827 | Create a `` tag.
828 |
829 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feOffset
830 |
831 | Parameters
832 | ----------
833 | *args
834 | Child elements to this tag.
835 | _add_ws
836 | A bool indicating whether whitespace should be added around this tag.
837 | **kwargs
838 | Attributes to this tag.
839 |
840 | Returns
841 | -------
842 | :
843 | A :class:`~htmltools.Tag` object.
844 |
845 | See Also
846 | --------
847 | * :class:`~htmltools.Tag`
848 | """
849 |
850 | return Tag("feOffset", *args, _add_ws=_add_ws, **kwargs)
851 |
852 |
853 | def fePointLight(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
854 | """
855 | Create a `` tag.
856 |
857 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/fePointLight
858 |
859 | Parameters
860 | ----------
861 | *args
862 | Child elements to this tag.
863 | _add_ws
864 | A bool indicating whether whitespace should be added around this tag.
865 | **kwargs
866 | Attributes to this tag.
867 |
868 | Returns
869 | -------
870 | :
871 | A :class:`~htmltools.Tag` object.
872 |
873 | See Also
874 | --------
875 | * :class:`~htmltools.Tag`
876 | """
877 |
878 | return Tag("fePointLight", *args, _add_ws=_add_ws, **kwargs)
879 |
880 |
881 | def feSpecularLighting(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
882 | """
883 | Create a `` tag.
884 |
885 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feSpecularLighting
886 |
887 | Parameters
888 | ----------
889 | *args
890 | Child elements to this tag.
891 | _add_ws
892 | A bool indicating whether whitespace should be added around this tag.
893 | **kwargs
894 | Attributes to this tag.
895 |
896 | Returns
897 | -------
898 | :
899 | A :class:`~htmltools.Tag` object.
900 |
901 | See Also
902 | --------
903 | * :class:`~htmltools.Tag`
904 | """
905 |
906 | return Tag("feSpecularLighting", *args, _add_ws=_add_ws, **kwargs)
907 |
908 |
909 | def feSpotLight(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
910 | """
911 | Create a `` tag.
912 |
913 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feSpotLight
914 |
915 | Parameters
916 | ----------
917 | *args
918 | Child elements to this tag.
919 | _add_ws
920 | A bool indicating whether whitespace should be added around this tag.
921 | **kwargs
922 | Attributes to this tag.
923 |
924 | Returns
925 | -------
926 | :
927 | A :class:`~htmltools.Tag` object.
928 |
929 | See Also
930 | --------
931 | * :class:`~htmltools.Tag`
932 | """
933 |
934 | return Tag("feSpotLight", *args, _add_ws=_add_ws, **kwargs)
935 |
936 |
937 | def feTile(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
938 | """
939 | Create a `` tag.
940 |
941 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feTile
942 |
943 | Parameters
944 | ----------
945 | *args
946 | Child elements to this tag.
947 | _add_ws
948 | A bool indicating whether whitespace should be added around this tag.
949 | **kwargs
950 | Attributes to this tag.
951 |
952 | Returns
953 | -------
954 | :
955 | A :class:`~htmltools.Tag` object.
956 |
957 | See Also
958 | --------
959 | * :class:`~htmltools.Tag`
960 | """
961 |
962 | return Tag("feTile", *args, _add_ws=_add_ws, **kwargs)
963 |
964 |
965 | def feTurbulence(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
966 | """
967 | Create a `` tag.
968 |
969 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/feTurbulence
970 |
971 | Parameters
972 | ----------
973 | *args
974 | Child elements to this tag.
975 | _add_ws
976 | A bool indicating whether whitespace should be added around this tag.
977 | **kwargs
978 | Attributes to this tag.
979 |
980 | Returns
981 | -------
982 | :
983 | A :class:`~htmltools.Tag` object.
984 |
985 | See Also
986 | --------
987 | * :class:`~htmltools.Tag`
988 | """
989 |
990 | return Tag("feTurbulence", *args, _add_ws=_add_ws, **kwargs)
991 |
992 |
993 | def filter(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
994 | """
995 | Create a `` tag.
996 |
997 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/filter
998 |
999 | Parameters
1000 | ----------
1001 | *args
1002 | Child elements to this tag.
1003 | _add_ws
1004 | A bool indicating whether whitespace should be added around this tag.
1005 | **kwargs
1006 | Attributes to this tag.
1007 |
1008 | Returns
1009 | -------
1010 | :
1011 | A :class:`~htmltools.Tag` object.
1012 |
1013 | See Also
1014 | --------
1015 | * :class:`~htmltools.Tag`
1016 | """
1017 |
1018 | return Tag("filter", *args, _add_ws=_add_ws, **kwargs)
1019 |
1020 |
1021 | def foreignObject(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
1022 | """
1023 | Create a `` tag.
1024 |
1025 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/foreignObject
1026 |
1027 | Parameters
1028 | ----------
1029 | *args
1030 | Child elements to this tag.
1031 | _add_ws
1032 | A bool indicating whether whitespace should be added around this tag.
1033 | **kwargs
1034 | Attributes to this tag.
1035 |
1036 | Returns
1037 | -------
1038 | :
1039 | A :class:`~htmltools.Tag` object.
1040 |
1041 | See Also
1042 | --------
1043 | * :class:`~htmltools.Tag`
1044 | """
1045 |
1046 | return Tag("foreignObject", *args, _add_ws=_add_ws, **kwargs)
1047 |
1048 |
1049 | def g(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
1050 | """
1051 | Create a `` tag.
1052 |
1053 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/g
1054 |
1055 | Parameters
1056 | ----------
1057 | *args
1058 | Child elements to this tag.
1059 | _add_ws
1060 | A bool indicating whether whitespace should be added around this tag.
1061 | **kwargs
1062 | Attributes to this tag.
1063 |
1064 | Returns
1065 | -------
1066 | :
1067 | A :class:`~htmltools.Tag` object.
1068 |
1069 | See Also
1070 | --------
1071 | * :class:`~htmltools.Tag`
1072 | """
1073 |
1074 | return Tag("g", *args, _add_ws=_add_ws, **kwargs)
1075 |
1076 |
1077 | def hatch(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
1078 | """
1079 | Create a `` tag.
1080 |
1081 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/hatch
1082 |
1083 | Parameters
1084 | ----------
1085 | *args
1086 | Child elements to this tag.
1087 | _add_ws
1088 | A bool indicating whether whitespace should be added around this tag.
1089 | **kwargs
1090 | Attributes to this tag.
1091 |
1092 | Returns
1093 | -------
1094 | :
1095 | A :class:`~htmltools.Tag` object.
1096 |
1097 | See Also
1098 | --------
1099 | * :class:`~htmltools.Tag`
1100 | """
1101 |
1102 | return Tag("hatch", *args, _add_ws=_add_ws, **kwargs)
1103 |
1104 |
1105 | def hatchpath(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
1106 | """
1107 | Create a `` tag.
1108 |
1109 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/hatchpath
1110 |
1111 | Parameters
1112 | ----------
1113 | *args
1114 | Child elements to this tag.
1115 | _add_ws
1116 | A bool indicating whether whitespace should be added around this tag.
1117 | **kwargs
1118 | Attributes to this tag.
1119 |
1120 | Returns
1121 | -------
1122 | :
1123 | A :class:`~htmltools.Tag` object.
1124 |
1125 | See Also
1126 | --------
1127 | * :class:`~htmltools.Tag`
1128 | """
1129 |
1130 | return Tag("hatchpath", *args, _add_ws=_add_ws, **kwargs)
1131 |
1132 |
1133 | def image(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
1134 | """
1135 | Create a `` tag.
1136 |
1137 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/image
1138 |
1139 | Parameters
1140 | ----------
1141 | *args
1142 | Child elements to this tag.
1143 | _add_ws
1144 | A bool indicating whether whitespace should be added around this tag.
1145 | **kwargs
1146 | Attributes to this tag.
1147 |
1148 | Returns
1149 | -------
1150 | :
1151 | A :class:`~htmltools.Tag` object.
1152 |
1153 | See Also
1154 | --------
1155 | * :class:`~htmltools.Tag`
1156 | """
1157 |
1158 | return Tag("image", *args, _add_ws=_add_ws, **kwargs)
1159 |
1160 |
1161 | def line(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
1162 | """
1163 | Create a `` tag.
1164 |
1165 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/line
1166 |
1167 | Parameters
1168 | ----------
1169 | *args
1170 | Child elements to this tag.
1171 | _add_ws
1172 | A bool indicating whether whitespace should be added around this tag.
1173 | **kwargs
1174 | Attributes to this tag.
1175 |
1176 | Returns
1177 | -------
1178 | :
1179 | A :class:`~htmltools.Tag` object.
1180 |
1181 | See Also
1182 | --------
1183 | * :class:`~htmltools.Tag`
1184 | """
1185 |
1186 | return Tag("line", *args, _add_ws=_add_ws, **kwargs)
1187 |
1188 |
1189 | def linearGradient(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
1190 | """
1191 | Create a `` tag.
1192 |
1193 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/linearGradient
1194 |
1195 | Parameters
1196 | ----------
1197 | *args
1198 | Child elements to this tag.
1199 | _add_ws
1200 | A bool indicating whether whitespace should be added around this tag.
1201 | **kwargs
1202 | Attributes to this tag.
1203 |
1204 | Returns
1205 | -------
1206 | :
1207 | A :class:`~htmltools.Tag` object.
1208 |
1209 | See Also
1210 | --------
1211 | * :class:`~htmltools.Tag`
1212 | """
1213 |
1214 | return Tag("linearGradient", *args, _add_ws=_add_ws, **kwargs)
1215 |
1216 |
1217 | def marker(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
1218 | """
1219 | Create a `` tag.
1220 |
1221 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/marker
1222 |
1223 | Parameters
1224 | ----------
1225 | *args
1226 | Child elements to this tag.
1227 | _add_ws
1228 | A bool indicating whether whitespace should be added around this tag.
1229 | **kwargs
1230 | Attributes to this tag.
1231 |
1232 | Returns
1233 | -------
1234 | :
1235 | A :class:`~htmltools.Tag` object.
1236 |
1237 | See Also
1238 | --------
1239 | * :class:`~htmltools.Tag`
1240 | """
1241 |
1242 | return Tag("marker", *args, _add_ws=_add_ws, **kwargs)
1243 |
1244 |
1245 | def mask(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
1246 | """
1247 | Create a `` tag.
1248 |
1249 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/mask
1250 |
1251 | Parameters
1252 | ----------
1253 | *args
1254 | Child elements to this tag.
1255 | _add_ws
1256 | A bool indicating whether whitespace should be added around this tag.
1257 | **kwargs
1258 | Attributes to this tag.
1259 |
1260 | Returns
1261 | -------
1262 | :
1263 | A :class:`~htmltools.Tag` object.
1264 |
1265 | See Also
1266 | --------
1267 | * :class:`~htmltools.Tag`
1268 | """
1269 |
1270 | return Tag("mask", *args, _add_ws=_add_ws, **kwargs)
1271 |
1272 |
1273 | def metadata(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
1274 | """
1275 | Create a `` tag.
1276 |
1277 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/metadata
1278 |
1279 | Parameters
1280 | ----------
1281 | *args
1282 | Child elements to this tag.
1283 | _add_ws
1284 | A bool indicating whether whitespace should be added around this tag.
1285 | **kwargs
1286 | Attributes to this tag.
1287 |
1288 | Returns
1289 | -------
1290 | :
1291 | A :class:`~htmltools.Tag` object.
1292 |
1293 | See Also
1294 | --------
1295 | * :class:`~htmltools.Tag`
1296 | """
1297 |
1298 | return Tag("metadata", *args, _add_ws=_add_ws, **kwargs)
1299 |
1300 |
1301 | def mpath(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
1302 | """
1303 | Create a `` tag.
1304 |
1305 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/mpath
1306 |
1307 | Parameters
1308 | ----------
1309 | *args
1310 | Child elements to this tag.
1311 | _add_ws
1312 | A bool indicating whether whitespace should be added around this tag.
1313 | **kwargs
1314 | Attributes to this tag.
1315 |
1316 | Returns
1317 | -------
1318 | :
1319 | A :class:`~htmltools.Tag` object.
1320 |
1321 | See Also
1322 | --------
1323 | * :class:`~htmltools.Tag`
1324 | """
1325 |
1326 | return Tag("mpath", *args, _add_ws=_add_ws, **kwargs)
1327 |
1328 |
1329 | def path(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
1330 | """
1331 | Create a `` tag.
1332 |
1333 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/path
1334 |
1335 | Parameters
1336 | ----------
1337 | *args
1338 | Child elements to this tag.
1339 | _add_ws
1340 | A bool indicating whether whitespace should be added around this tag.
1341 | **kwargs
1342 | Attributes to this tag.
1343 |
1344 | Returns
1345 | -------
1346 | :
1347 | A :class:`~htmltools.Tag` object.
1348 |
1349 | See Also
1350 | --------
1351 | * :class:`~htmltools.Tag`
1352 | """
1353 |
1354 | return Tag("path", *args, _add_ws=_add_ws, **kwargs)
1355 |
1356 |
1357 | def pattern(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
1358 | """
1359 | Create a `` tag.
1360 |
1361 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/pattern
1362 |
1363 | Parameters
1364 | ----------
1365 | *args
1366 | Child elements to this tag.
1367 | _add_ws
1368 | A bool indicating whether whitespace should be added around this tag.
1369 | **kwargs
1370 | Attributes to this tag.
1371 |
1372 | Returns
1373 | -------
1374 | :
1375 | A :class:`~htmltools.Tag` object.
1376 |
1377 | See Also
1378 | --------
1379 | * :class:`~htmltools.Tag`
1380 | """
1381 |
1382 | return Tag("pattern", *args, _add_ws=_add_ws, **kwargs)
1383 |
1384 |
1385 | def polygon(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
1386 | """
1387 | Create a `` tag.
1388 |
1389 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/polygon
1390 |
1391 | Parameters
1392 | ----------
1393 | *args
1394 | Child elements to this tag.
1395 | _add_ws
1396 | A bool indicating whether whitespace should be added around this tag.
1397 | **kwargs
1398 | Attributes to this tag.
1399 |
1400 | Returns
1401 | -------
1402 | :
1403 | A :class:`~htmltools.Tag` object.
1404 |
1405 | See Also
1406 | --------
1407 | * :class:`~htmltools.Tag`
1408 | """
1409 |
1410 | return Tag("polygon", *args, _add_ws=_add_ws, **kwargs)
1411 |
1412 |
1413 | def polyline(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
1414 | """
1415 | Create a `` tag.
1416 |
1417 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/polyline
1418 |
1419 | Parameters
1420 | ----------
1421 | *args
1422 | Child elements to this tag.
1423 | _add_ws
1424 | A bool indicating whether whitespace should be added around this tag.
1425 | **kwargs
1426 | Attributes to this tag.
1427 |
1428 | Returns
1429 | -------
1430 | :
1431 | A :class:`~htmltools.Tag` object.
1432 |
1433 | See Also
1434 | --------
1435 | * :class:`~htmltools.Tag`
1436 | """
1437 |
1438 | return Tag("polyline", *args, _add_ws=_add_ws, **kwargs)
1439 |
1440 |
1441 | def radialGradient(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
1442 | """
1443 | Create a `` tag.
1444 |
1445 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/radialGradient
1446 |
1447 | Parameters
1448 | ----------
1449 | *args
1450 | Child elements to this tag.
1451 | _add_ws
1452 | A bool indicating whether whitespace should be added around this tag.
1453 | **kwargs
1454 | Attributes to this tag.
1455 |
1456 | Returns
1457 | -------
1458 | :
1459 | A :class:`~htmltools.Tag` object.
1460 |
1461 | See Also
1462 | --------
1463 | * :class:`~htmltools.Tag`
1464 | """
1465 |
1466 | return Tag("radialGradient", *args, _add_ws=_add_ws, **kwargs)
1467 |
1468 |
1469 | def rect(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
1470 | """
1471 | Create a `` tag.
1472 |
1473 | Creates the `` SVG element. Learn more at https://developer.mozilla.org/en-US/docs/Web/SVG/Element/rect
1474 |
1475 | Parameters
1476 | ----------
1477 | *args
1478 | Child elements to this tag.
1479 | _add_ws
1480 | A bool indicating whether whitespace should be added around this tag.
1481 | **kwargs
1482 | Attributes to this tag.
1483 |
1484 | Returns
1485 | -------
1486 | :
1487 | A :class:`~htmltools.Tag` object.
1488 |
1489 | See Also
1490 | --------
1491 | * :class:`~htmltools.Tag`
1492 | """
1493 |
1494 | return Tag("rect", *args, _add_ws=_add_ws, **kwargs)
1495 |
1496 |
1497 | def script(*args: TagChild | TagAttrs, _add_ws: TagAttrValue = True, **kwargs: TagAttrValue) -> Tag:
1498 | """
1499 | Create a `
9 |
10 |
11 |
12 | foo
13 | bar
14 |
15 |