New vite-based examples app (#1226)
Right now this examples app looks exactly the same as our old examples app, but there are a couple of tiny differences: - We use `vite` instead of our own esbuild setup for development and bundling - We use `@tldraw/assets` for smart asset hashing instead of copying the assets to a public folder You can use `@tldraw/assets` with vite with a bunch of extra config, but it (plus a bunch of other bundlers) also support a special syntax for specifying asset urls: `new URL('./my/asset.svg', import.meta.url).href`. This approach is more standards-complient, but doesn't work with every bundler just yet. This diff also adds a url-based version of `@tldraw/assets`, although I'd like to tweak the entry point - right now you need to import from `@tldraw/assets/lib/urls`, but i'd like to find a way to get this to `@tldraw/assets/urls` or something at some point. There are a couple other extra fixes in here: - vscode builds were broken, they're fixed now! - there's also a little tweak to the `getBundlerAssetUrls` API to allow passing in a function instead of an object for URL formatting - there are new internal-only functions for injecting asset urls globally instead of passing them in via react props. this means we can get the benefits of cacheable URLs without having to clutter our examples by passing them in
|
@ -1,209 +0,0 @@
|
|||
# @tldraw/example
|
||||
|
||||
## 2.0.0-alpha.11
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies
|
||||
- @tldraw/tldraw@2.0.0-alpha.11
|
||||
|
||||
## 2.0.0-alpha.10
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [4b4399b6e]
|
||||
- @tldraw/tldraw@2.0.0-alpha.10
|
||||
|
||||
## 2.0.0-alpha.9
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Release day!
|
||||
- Updated dependencies
|
||||
- @tldraw/tldraw@2.0.0-alpha.9
|
||||
|
||||
## 2.0.0-alpha.8
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Updated dependencies [23dd81cfe]
|
||||
- @tldraw/editor@2.0.0-alpha.8
|
||||
- @tldraw/tlsync@2.0.0-alpha.8
|
||||
- @tldraw/ui@2.0.0-alpha.8
|
||||
- @tldraw/app-shared@2.0.0-alpha.8
|
||||
|
||||
## 2.0.0-alpha.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Bug fixes.
|
||||
- Updated dependencies
|
||||
- @tldraw/app-shared@2.0.0-alpha.7
|
||||
- @tldraw/editor@2.0.0-alpha.7
|
||||
- @tldraw/polyfills@2.0.0-alpha.7
|
||||
- @tldraw/tlsync@2.0.0-alpha.7
|
||||
- @tldraw/tlvalidate@2.0.0-alpha.7
|
||||
- @tldraw/ui@2.0.0-alpha.7
|
||||
- @tldraw/utils@2.0.0-alpha.7
|
||||
|
||||
## 2.0.0-alpha.6
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Add licenses.
|
||||
- Updated dependencies
|
||||
- @tldraw/app-shared@2.0.0-alpha.6
|
||||
- @tldraw/editor@2.0.0-alpha.6
|
||||
- @tldraw/polyfills@2.0.0-alpha.6
|
||||
- @tldraw/tlsync@2.0.0-alpha.6
|
||||
- @tldraw/tlvalidate@2.0.0-alpha.6
|
||||
- @tldraw/ui@2.0.0-alpha.6
|
||||
- @tldraw/utils@2.0.0-alpha.6
|
||||
|
||||
## 2.0.0-alpha.5
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Add CSS files to tldraw/tldraw.
|
||||
- Updated dependencies
|
||||
- @tldraw/app-shared@2.0.0-alpha.5
|
||||
- @tldraw/editor@2.0.0-alpha.5
|
||||
- @tldraw/polyfills@2.0.0-alpha.5
|
||||
- @tldraw/tlsync@2.0.0-alpha.5
|
||||
- @tldraw/tlvalidate@2.0.0-alpha.5
|
||||
- @tldraw/ui@2.0.0-alpha.5
|
||||
- @tldraw/utils@2.0.0-alpha.5
|
||||
|
||||
## 2.0.0-alpha.4
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Add children to tldraw/tldraw
|
||||
- Updated dependencies
|
||||
- @tldraw/app-shared@2.0.0-alpha.4
|
||||
- @tldraw/editor@2.0.0-alpha.4
|
||||
- @tldraw/polyfills@2.0.0-alpha.4
|
||||
- @tldraw/tlsync@2.0.0-alpha.4
|
||||
- @tldraw/tlvalidate@2.0.0-alpha.4
|
||||
- @tldraw/ui@2.0.0-alpha.4
|
||||
- @tldraw/utils@2.0.0-alpha.4
|
||||
|
||||
## 2.0.0-alpha.3
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Change permissions.
|
||||
- Updated dependencies
|
||||
- @tldraw/app-shared@2.0.0-alpha.3
|
||||
- @tldraw/editor@2.0.0-alpha.3
|
||||
- @tldraw/polyfills@2.0.0-alpha.3
|
||||
- @tldraw/tlsync@2.0.0-alpha.3
|
||||
- @tldraw/tlvalidate@2.0.0-alpha.3
|
||||
- @tldraw/ui@2.0.0-alpha.3
|
||||
- @tldraw/utils@2.0.0-alpha.3
|
||||
|
||||
## 2.0.0-alpha.2
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Add tldraw, editor
|
||||
- Updated dependencies
|
||||
- @tldraw/app-shared@2.0.0-alpha.2
|
||||
- @tldraw/editor@2.0.0-alpha.2
|
||||
- @tldraw/polyfills@2.0.0-alpha.2
|
||||
- @tldraw/tlsync@2.0.0-alpha.2
|
||||
- @tldraw/tlvalidate@2.0.0-alpha.2
|
||||
- @tldraw/ui@2.0.0-alpha.2
|
||||
- @tldraw/utils@2.0.0-alpha.2
|
||||
|
||||
## 0.1.0-alpha.11
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Fix stale reactors.
|
||||
- Updated dependencies
|
||||
- @tldraw/app-shared@0.1.0-alpha.11
|
||||
- @tldraw/polyfills@0.1.0-alpha.11
|
||||
- @tldraw/tldraw-beta@0.1.0-alpha.11
|
||||
- @tldraw/tlsync@0.1.0-alpha.11
|
||||
- @tldraw/tlvalidate@0.1.0-alpha.11
|
||||
- @tldraw/ui@0.1.0-alpha.11
|
||||
- @tldraw/utils@0.1.0-alpha.11
|
||||
|
||||
## 0.1.0-alpha.10
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Fix type export bug.
|
||||
- Updated dependencies
|
||||
- @tldraw/app-shared@0.1.0-alpha.10
|
||||
- @tldraw/polyfills@0.1.0-alpha.10
|
||||
- @tldraw/tldraw-beta@0.1.0-alpha.10
|
||||
- @tldraw/tlsync@0.1.0-alpha.10
|
||||
- @tldraw/tlvalidate@0.1.0-alpha.10
|
||||
- @tldraw/ui@0.1.0-alpha.10
|
||||
- @tldraw/utils@0.1.0-alpha.10
|
||||
|
||||
## 0.1.0-alpha.9
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Fix import bugs.
|
||||
- Updated dependencies
|
||||
- @tldraw/app-shared@0.1.0-alpha.9
|
||||
- @tldraw/polyfills@0.1.0-alpha.9
|
||||
- @tldraw/tldraw-beta@0.1.0-alpha.9
|
||||
- @tldraw/tlsync@0.1.0-alpha.9
|
||||
- @tldraw/tlvalidate@0.1.0-alpha.9
|
||||
- @tldraw/ui@0.1.0-alpha.9
|
||||
- @tldraw/utils@0.1.0-alpha.9
|
||||
|
||||
## 0.1.0-alpha.8
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Changes validation requirements, exports validation helpers.
|
||||
- Updated dependencies
|
||||
- @tldraw/app-shared@0.1.0-alpha.8
|
||||
- @tldraw/polyfills@0.1.0-alpha.8
|
||||
- @tldraw/tldraw-beta@0.1.0-alpha.8
|
||||
- @tldraw/tlsync@0.1.0-alpha.8
|
||||
- @tldraw/tlvalidate@0.1.0-alpha.8
|
||||
- @tldraw/ui@0.1.0-alpha.8
|
||||
- @tldraw/utils@0.1.0-alpha.8
|
||||
|
||||
## 0.1.0-alpha.7
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- - Pre-pre-release update
|
||||
- Updated dependencies
|
||||
- @tldraw/app-shared@0.1.0-alpha.7
|
||||
- @tldraw/polyfills@0.1.0-alpha.7
|
||||
- @tldraw/tldraw-beta@0.1.0-alpha.7
|
||||
- @tldraw/tlsync@0.1.0-alpha.7
|
||||
- @tldraw/tlvalidate@0.1.0-alpha.7
|
||||
- @tldraw/ui@0.1.0-alpha.7
|
||||
- @tldraw/utils@0.1.0-alpha.7
|
||||
|
||||
## 0.0.2-alpha.1
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Fix error with HMR
|
||||
- Updated dependencies
|
||||
- @tldraw/polyfills@0.0.2-alpha.1
|
||||
- @tldraw/tldraw-beta@0.0.2-alpha.1
|
||||
- @tldraw/tlsync@0.0.2-alpha.1
|
||||
- @tldraw/ui@0.0.2-alpha.1
|
||||
|
||||
## 0.0.2-alpha.0
|
||||
|
||||
### Patch Changes
|
||||
|
||||
- Initial release
|
||||
- Updated dependencies
|
||||
- @tldraw/polyfills@0.0.2-alpha.0
|
||||
- @tldraw/tldraw-beta@0.0.2-alpha.0
|
||||
- @tldraw/tlsync@0.0.2-alpha.0
|
||||
- @tldraw/ui@0.0.2-alpha.0
|
|
@ -1,190 +0,0 @@
|
|||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
Copyright 2023 tldraw GB Ltd.
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
16
apps/examples/package.json
Executable file → Normal file
|
@ -27,22 +27,20 @@
|
|||
"infinite"
|
||||
],
|
||||
"scripts": {
|
||||
"dev": "concurrently --names \"tsc,esbuild\" \"yarn run -T tsx ../../scripts/typecheck.ts --build --watch --preserveWatchOutput\" \"node ./scripts/dev.mjs\"",
|
||||
"dev": "vite",
|
||||
"build": "vite build",
|
||||
"lint": "yarn run -T tsx ../../scripts/lint.ts"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/ip": "^1.1.0",
|
||||
"browserslist-to-esbuild": "^1.2.0",
|
||||
"concurrently": "^7.4.0",
|
||||
"esbuild": "^0.16.7",
|
||||
"ip": "^1.1.8",
|
||||
"@babel/plugin-proposal-decorators": "^7.21.0",
|
||||
"lazyrepo": "0.0.0-alpha.26",
|
||||
"node-forge": "^1.3.1",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0"
|
||||
"vite": "^4.3.4"
|
||||
},
|
||||
"dependencies": {
|
||||
"@tldraw/assets": "workspace:*",
|
||||
"@tldraw/tldraw": "workspace:*",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-router-dom": "^6.9.0",
|
||||
"signia": "0.1.4",
|
||||
"signia-react": "0.1.4"
|
||||
|
|
|
@ -1,129 +0,0 @@
|
|||
// @ts-nocheck
|
||||
/* eslint-disable */
|
||||
|
||||
import browserslist from 'browserslist-to-esbuild'
|
||||
import esbuild from 'esbuild'
|
||||
import { createServer, request } from 'http'
|
||||
import ip from 'ip'
|
||||
import chalk from 'kleur'
|
||||
import * as url from 'url'
|
||||
import fs from 'fs'
|
||||
|
||||
const LOG_REQUEST_PATHS = false
|
||||
|
||||
const { log } = console
|
||||
|
||||
const dirname = url.fileURLToPath(new URL('.', import.meta.url))
|
||||
|
||||
const PORT = 5420
|
||||
const SSL_PORT = 5421
|
||||
const OUT_DIR = dirname + '/../www/'
|
||||
|
||||
/** @type {{ write(data: any): any }[]} */
|
||||
const clients = []
|
||||
|
||||
async function main() {
|
||||
const isAnalyzeEnabled = process.env.ANALYZE === 'true'
|
||||
|
||||
const result = await esbuild.build({
|
||||
entryPoints: ['src/index.tsx'],
|
||||
outdir: OUT_DIR,
|
||||
bundle: true,
|
||||
minify: false,
|
||||
sourcemap: true,
|
||||
incremental: true,
|
||||
format: 'cjs',
|
||||
external: ['*.woff'],
|
||||
target: browserslist(['defaults']),
|
||||
metafile: isAnalyzeEnabled,
|
||||
define: {
|
||||
process: '{ "env": { "NODE_ENV": "development"} }',
|
||||
},
|
||||
loader: {
|
||||
'.woff2': 'file',
|
||||
'.svg': 'file',
|
||||
'.json': 'file',
|
||||
'.png': 'file',
|
||||
},
|
||||
watch: {
|
||||
onRebuild(error) {
|
||||
log('rebuilt')
|
||||
if (error) {
|
||||
log(error)
|
||||
}
|
||||
clients.forEach((res) => res.write('data: update\n\n'))
|
||||
clients.length = 0
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
if (isAnalyzeEnabled) {
|
||||
await fs.promises.writeFile('build.esbuild.json', JSON.stringify(result.metafile));
|
||||
console.log(await esbuild.analyzeMetafile(result.metafile, {
|
||||
verbose: true,
|
||||
}))
|
||||
}
|
||||
|
||||
esbuild.serve({ servedir: OUT_DIR, port: 8009 }, {}).then(({ host, port: esbuildPort }) => {
|
||||
const handler = async (req, res) => {
|
||||
const { url, method, headers } = req
|
||||
if (req.url === '/esbuild')
|
||||
return clients.push(
|
||||
res.writeHead(200, {
|
||||
'Content-Type': 'text/event-stream',
|
||||
'Cache-Control': 'no-cache',
|
||||
Connection: 'keep-alive',
|
||||
})
|
||||
)
|
||||
|
||||
/** @param {string} url */
|
||||
function forwardRequest(url) {
|
||||
const path = (url?.split('/').pop()?.indexOf('.') ?? -1) > -1 ? url : `/index.html` //for PWA with router
|
||||
|
||||
if (LOG_REQUEST_PATHS) {
|
||||
console.log('[%s]=', method, path)
|
||||
}
|
||||
|
||||
const req2 = request(
|
||||
{ hostname: host, port: esbuildPort, path, method, headers },
|
||||
(prxRes) => {
|
||||
if (url === '/index.js') {
|
||||
const jsReloadCode =
|
||||
' (() => new EventSource("/esbuild").onmessage = () => location.reload())();'
|
||||
|
||||
const newHeaders = {
|
||||
...prxRes.headers,
|
||||
'content-length':
|
||||
parseInt(prxRes.headers['content-length'] ?? '0', 10) + jsReloadCode.length,
|
||||
}
|
||||
|
||||
res.writeHead(prxRes.statusCode ?? 0, newHeaders)
|
||||
res.write(jsReloadCode)
|
||||
} else {
|
||||
res.writeHead(prxRes.statusCode ?? 0, prxRes.headers)
|
||||
}
|
||||
prxRes.pipe(res, { end: true })
|
||||
}
|
||||
)
|
||||
|
||||
req.pipe(req2, { end: true })
|
||||
}
|
||||
|
||||
forwardRequest(url ?? '/')
|
||||
}
|
||||
|
||||
const server = createServer(handler)
|
||||
server.on('error', function (e) {
|
||||
// Handle your error here
|
||||
console.log(e)
|
||||
})
|
||||
server.listen(PORT, () => {
|
||||
log(`Running on:\n`)
|
||||
log(chalk.bold().cyan(` http://localhost:${PORT}`))
|
||||
log(`\nNetwork:\n`)
|
||||
log(chalk.bold().cyan(` http://${ip.address()}:${PORT}`))
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
main()
|
|
@ -97,9 +97,9 @@ class CardUtil extends TLBoxUtil<CardShape> {
|
|||
// Because the card tool can be just a rectangle, we can extend the
|
||||
// TLBoxTool class. This gives us a lot of functionality for free.
|
||||
export class CardTool extends TLBoxTool {
|
||||
static id = 'card'
|
||||
static initial = 'idle'
|
||||
shapeType = 'card'
|
||||
static override id = 'card'
|
||||
static override initial = 'idle'
|
||||
override shapeType = 'card'
|
||||
}
|
||||
|
||||
// Finally, collect the custom tools and shapes into a config object
|
||||
|
|
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 9.2 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
15
apps/examples/src/index.html
Normal file
|
@ -0,0 +1,15 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="icon" type="image/svg+xml" href="./icons/tldraw.svg" />
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="./icons/apple-touch-icon.png" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||||
<title>tldraw examples</title>
|
||||
<link rel="stylesheet" href="./styles.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
<script type="module" src="./index.tsx"></script>
|
||||
</body>
|
||||
</html>
|
|
@ -1,4 +1,10 @@
|
|||
import { DefaultErrorFallback, ErrorBoundary } from '@tldraw/tldraw'
|
||||
import { getBundlerAssetUrls } from '@tldraw/assets/src/urls'
|
||||
import {
|
||||
DefaultErrorFallback,
|
||||
ErrorBoundary,
|
||||
setDefaultEditorAssetUrls,
|
||||
setDefaultUiAssetUrls,
|
||||
} from '@tldraw/tldraw'
|
||||
import { StrictMode } from 'react'
|
||||
import { createRoot } from 'react-dom/client'
|
||||
import { RouterProvider, createBrowserRouter } from 'react-router-dom'
|
||||
|
@ -12,9 +18,18 @@ import ExampleScroll from './6-scroll/ScrollExample'
|
|||
import ExampleMultiple from './7-multiple/MultipleExample'
|
||||
import ErrorBoundaryExample from './8-error-boundaries/ErrorBoundaryExample'
|
||||
import HideUiExample from './9-hide-ui/HideUiExample'
|
||||
import './index.css'
|
||||
|
||||
const router = createBrowserRouter([
|
||||
// we use secret internal `setDefaultAssetUrls` functions to set these at the
|
||||
// top-level so assets don't need to be passed down in every single example.
|
||||
const assetUrls = getBundlerAssetUrls()
|
||||
setDefaultEditorAssetUrls(assetUrls)
|
||||
setDefaultUiAssetUrls(assetUrls)
|
||||
|
||||
type Example = {
|
||||
path: string
|
||||
element: JSX.Element
|
||||
}
|
||||
export const allExamples: Example[] = [
|
||||
{
|
||||
path: '/',
|
||||
element: <ExampleBasic />,
|
||||
|
@ -55,7 +70,9 @@ const router = createBrowserRouter([
|
|||
path: '/custom-components',
|
||||
element: <CustomComponentsExample />,
|
||||
},
|
||||
])
|
||||
]
|
||||
|
||||
const router = createBrowserRouter(allExamples)
|
||||
|
||||
const rootElement = document.getElementById('root')
|
||||
const root = createRoot(rootElement!)
|
||||
|
|
30
apps/examples/tsconfig.json
Executable file → Normal file
|
@ -1,29 +1,9 @@
|
|||
{
|
||||
"extends": "../../config/tsconfig.base.json",
|
||||
"include": ["src", "./vite.config.ts"],
|
||||
"exclude": ["node_modules", "dist", "**/*.css", ".tsbuild*", "./scripts/legacy-translations"],
|
||||
"compilerOptions": {
|
||||
"target": "ESNext",
|
||||
"useDefineForClassFields": true,
|
||||
"lib": ["DOM", "DOM.Iterable", "ESNext"],
|
||||
"allowJs": true,
|
||||
"checkJs": true,
|
||||
"skipLibCheck": true,
|
||||
"esModuleInterop": true,
|
||||
"removeComments": true,
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"strict": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"module": "ESNext",
|
||||
"moduleResolution": "Node",
|
||||
"resolveJsonModule": true,
|
||||
"noEmit": true,
|
||||
"jsx": "react-jsx",
|
||||
"incremental": true,
|
||||
"baseUrl": ".",
|
||||
"composite": true,
|
||||
"sourceMap": false,
|
||||
"importHelpers": false,
|
||||
"skipDefaultLibCheck": true,
|
||||
"experimentalDecorators": true
|
||||
"outDir": "./.tsbuild"
|
||||
},
|
||||
"include": ["src", "scripts"],
|
||||
"references": [{ "path": "../../packages/tldraw" }]
|
||||
"references": [{ "path": "../../packages/tldraw" }, { "path": "../../packages/assets" }]
|
||||
}
|
||||
|
|
13
apps/examples/vercel.json
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
"headers": [
|
||||
{
|
||||
"source": "/assets/(.*)",
|
||||
"headers": [
|
||||
{
|
||||
"key": "Cache-Control",
|
||||
"value": "public,max-age=31536000,immutable"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
15
apps/examples/vite.config.ts
Normal file
|
@ -0,0 +1,15 @@
|
|||
import path from 'path'
|
||||
import { defineConfig } from 'vite'
|
||||
|
||||
export default defineConfig({
|
||||
root: path.join(__dirname, 'src'),
|
||||
publicDir: path.join(__dirname, 'public'),
|
||||
build: {
|
||||
outDir: path.join(__dirname, 'dist'),
|
||||
assetsInlineLimit: 0,
|
||||
},
|
||||
server: {
|
||||
port: 5420,
|
||||
},
|
||||
clearScreen: false,
|
||||
})
|
Before Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 6.5 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 5.2 KiB |
Before Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 281 B |
Before Width: | Height: | Size: 425 B |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 6.5 KiB |
|
@ -1,16 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<link rel="icon" type="image/svg+xml" href="/tldraw.svg" />
|
||||
<link id="manifest" rel="manifest" href="/manifest.json" />
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/icons/apple-touch-icon.png" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
|
||||
<title>tldraw</title>
|
||||
<script type="module" crossorigin src="/index.js"></script>
|
||||
<link rel="stylesheet" href="/index.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
</body>
|
||||
</html>
|
|
@ -1,35 +0,0 @@
|
|||
{
|
||||
"name": "tldraw",
|
||||
"short_name": "tldraw",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/android-chrome-512x512.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png",
|
||||
"purpose": "any"
|
||||
},
|
||||
{
|
||||
"src": "/android-chrome-maskable-512x512.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png",
|
||||
"purpose": "any maskable"
|
||||
},
|
||||
{
|
||||
"src": "/android-chrome-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png",
|
||||
"purpose": "any"
|
||||
},
|
||||
{
|
||||
"src": "/android-chrome-maskable-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png",
|
||||
"purpose": "any maskable"
|
||||
}
|
||||
],
|
||||
"theme_color": "#ffffff",
|
||||
"background_color": "#ffffff",
|
||||
"start_url": "/",
|
||||
"display": "standalone",
|
||||
"orientation": "portrait"
|
||||
}
|
Before Width: | Height: | Size: 9.3 KiB |
|
@ -29,7 +29,7 @@
|
|||
"scripts": {
|
||||
"build": "yarn run -T tsx scripts/build.ts",
|
||||
"build:vscode-editor": "yarn run -T tsx scripts/build.ts",
|
||||
"dev-vscode": "yarn run -T tsx scripts/dev.ts",
|
||||
"dev": "yarn run -T tsx scripts/dev.ts",
|
||||
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist",
|
||||
"lint": "yarn run -T tsx ../../../scripts/lint.ts"
|
||||
},
|
||||
|
|
|
@ -122,7 +122,7 @@
|
|||
"dependencies": false
|
||||
},
|
||||
"scripts": {
|
||||
"dev-vscode": "tsx scripts/dev.ts",
|
||||
"dev": "tsx scripts/dev.ts",
|
||||
"build": "cd ../editor && yarn build && cd ../extension && tsx scripts/build.ts",
|
||||
"web": "vscode-test-web --browserType=chromium --extensionDevelopmentPath=.",
|
||||
"package": "yarn build && tsx scripts/package.ts",
|
||||
|
|
440
packages/assets/src/imports.ts
Normal file
|
@ -0,0 +1,440 @@
|
|||
// This file is automatically generated by scripts/refresh-assets.ts.
|
||||
// Do not edit manually.
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/triple-slash-reference
|
||||
/// <reference path="../modules.d.ts" />
|
||||
import embedIconsCodepen from '../embed-icons/codepen.png'
|
||||
import embedIconsCodesandbox from '../embed-icons/codesandbox.png'
|
||||
import embedIconsExcalidraw from '../embed-icons/excalidraw.png'
|
||||
import embedIconsFelt from '../embed-icons/felt.png'
|
||||
import embedIconsFigma from '../embed-icons/figma.png'
|
||||
import embedIconsGithubGist from '../embed-icons/github_gist.png'
|
||||
import embedIconsGoogleCalendar from '../embed-icons/google_calendar.png'
|
||||
import embedIconsGoogleMaps from '../embed-icons/google_maps.png'
|
||||
import embedIconsGoogleSlides from '../embed-icons/google_slides.png'
|
||||
import embedIconsObservable from '../embed-icons/observable.png'
|
||||
import embedIconsReplit from '../embed-icons/replit.png'
|
||||
import embedIconsScratch from '../embed-icons/scratch.png'
|
||||
import embedIconsSpotify from '../embed-icons/spotify.png'
|
||||
import embedIconsTldraw from '../embed-icons/tldraw.png'
|
||||
import embedIconsVimeo from '../embed-icons/vimeo.png'
|
||||
import embedIconsYoutube from '../embed-icons/youtube.png'
|
||||
import fontsMonospace from '../fonts/IBMPlexMono-Medium.woff2'
|
||||
import fontsSansSerif from '../fonts/IBMPlexSans-Medium.woff2'
|
||||
import fontsSerif from '../fonts/IBMPlexSerif-Medium.woff2'
|
||||
import fontsDraw from '../fonts/Shantell_Sans-Normal-SemiBold.woff2'
|
||||
import iconsAlignBottomCenter from '../icons/icon/align-bottom-center.svg'
|
||||
import iconsAlignBottomLeft from '../icons/icon/align-bottom-left.svg'
|
||||
import iconsAlignBottomRight from '../icons/icon/align-bottom-right.svg'
|
||||
import iconsAlignBottom from '../icons/icon/align-bottom.svg'
|
||||
import iconsAlignCenterCenter from '../icons/icon/align-center-center.svg'
|
||||
import iconsAlignCenterHorizontal from '../icons/icon/align-center-horizontal.svg'
|
||||
import iconsAlignCenterLeft from '../icons/icon/align-center-left.svg'
|
||||
import iconsAlignCenterRight from '../icons/icon/align-center-right.svg'
|
||||
import iconsAlignCenterVertical from '../icons/icon/align-center-vertical.svg'
|
||||
import iconsAlignLeft from '../icons/icon/align-left.svg'
|
||||
import iconsAlignRight from '../icons/icon/align-right.svg'
|
||||
import iconsAlignTopCenter from '../icons/icon/align-top-center.svg'
|
||||
import iconsAlignTopLeft from '../icons/icon/align-top-left.svg'
|
||||
import iconsAlignTopRight from '../icons/icon/align-top-right.svg'
|
||||
import iconsAlignTop from '../icons/icon/align-top.svg'
|
||||
import iconsArrowLeft from '../icons/icon/arrow-left.svg'
|
||||
import iconsArrowheadArrow from '../icons/icon/arrowhead-arrow.svg'
|
||||
import iconsArrowheadBar from '../icons/icon/arrowhead-bar.svg'
|
||||
import iconsArrowheadDiamond from '../icons/icon/arrowhead-diamond.svg'
|
||||
import iconsArrowheadDot from '../icons/icon/arrowhead-dot.svg'
|
||||
import iconsArrowheadNone from '../icons/icon/arrowhead-none.svg'
|
||||
import iconsArrowheadSquare from '../icons/icon/arrowhead-square.svg'
|
||||
import iconsArrowheadTriangleInverted from '../icons/icon/arrowhead-triangle-inverted.svg'
|
||||
import iconsArrowheadTriangle from '../icons/icon/arrowhead-triangle.svg'
|
||||
import iconsAspectRatio from '../icons/icon/aspect-ratio.svg'
|
||||
import iconsAvatar from '../icons/icon/avatar.svg'
|
||||
import iconsBlob from '../icons/icon/blob.svg'
|
||||
import iconsBringForward from '../icons/icon/bring-forward.svg'
|
||||
import iconsBringToFront from '../icons/icon/bring-to-front.svg'
|
||||
import iconsCheck from '../icons/icon/check.svg'
|
||||
import iconsCheckboxChecked from '../icons/icon/checkbox-checked.svg'
|
||||
import iconsCheckboxEmpty from '../icons/icon/checkbox-empty.svg'
|
||||
import iconsChevronDown from '../icons/icon/chevron-down.svg'
|
||||
import iconsChevronLeft from '../icons/icon/chevron-left.svg'
|
||||
import iconsChevronRight from '../icons/icon/chevron-right.svg'
|
||||
import iconsChevronUp from '../icons/icon/chevron-up.svg'
|
||||
import iconsChevronsNe from '../icons/icon/chevrons-ne.svg'
|
||||
import iconsChevronsSw from '../icons/icon/chevrons-sw.svg'
|
||||
import iconsClipboardCopy from '../icons/icon/clipboard-copy.svg'
|
||||
import iconsCode from '../icons/icon/code.svg'
|
||||
import iconsCollab from '../icons/icon/collab.svg'
|
||||
import iconsColor from '../icons/icon/color.svg'
|
||||
import iconsComment from '../icons/icon/comment.svg'
|
||||
import iconsCross2 from '../icons/icon/cross-2.svg'
|
||||
import iconsCross from '../icons/icon/cross.svg'
|
||||
import iconsDashDashed from '../icons/icon/dash-dashed.svg'
|
||||
import iconsDashDotted from '../icons/icon/dash-dotted.svg'
|
||||
import iconsDashDraw from '../icons/icon/dash-draw.svg'
|
||||
import iconsDashSolid from '../icons/icon/dash-solid.svg'
|
||||
import iconsDiscord from '../icons/icon/discord.svg'
|
||||
import iconsDistributeHorizontal from '../icons/icon/distribute-horizontal.svg'
|
||||
import iconsDistributeVertical from '../icons/icon/distribute-vertical.svg'
|
||||
import iconsDot from '../icons/icon/dot.svg'
|
||||
import iconsDotsHorizontal from '../icons/icon/dots-horizontal.svg'
|
||||
import iconsDotsVertical from '../icons/icon/dots-vertical.svg'
|
||||
import iconsDragHandleDots from '../icons/icon/drag-handle-dots.svg'
|
||||
import iconsDuplicate from '../icons/icon/duplicate.svg'
|
||||
import iconsEdit from '../icons/icon/edit.svg'
|
||||
import iconsExternalLink from '../icons/icon/external-link.svg'
|
||||
import iconsFile from '../icons/icon/file.svg'
|
||||
import iconsFillNone from '../icons/icon/fill-none.svg'
|
||||
import iconsFillPattern from '../icons/icon/fill-pattern.svg'
|
||||
import iconsFillSemi from '../icons/icon/fill-semi.svg'
|
||||
import iconsFillSolid from '../icons/icon/fill-solid.svg'
|
||||
import iconsFollow from '../icons/icon/follow.svg'
|
||||
import iconsFollowing from '../icons/icon/following.svg'
|
||||
import iconsFontDraw from '../icons/icon/font-draw.svg'
|
||||
import iconsFontMono from '../icons/icon/font-mono.svg'
|
||||
import iconsFontSans from '../icons/icon/font-sans.svg'
|
||||
import iconsFontSerif from '../icons/icon/font-serif.svg'
|
||||
import iconsGeoArrowDown from '../icons/icon/geo-arrow-down.svg'
|
||||
import iconsGeoArrowLeft from '../icons/icon/geo-arrow-left.svg'
|
||||
import iconsGeoArrowRight from '../icons/icon/geo-arrow-right.svg'
|
||||
import iconsGeoArrowUp from '../icons/icon/geo-arrow-up.svg'
|
||||
import iconsGeoDiamond from '../icons/icon/geo-diamond.svg'
|
||||
import iconsGeoEllipse from '../icons/icon/geo-ellipse.svg'
|
||||
import iconsGeoHexagon from '../icons/icon/geo-hexagon.svg'
|
||||
import iconsGeoOctagon from '../icons/icon/geo-octagon.svg'
|
||||
import iconsGeoOval from '../icons/icon/geo-oval.svg'
|
||||
import iconsGeoPentagon from '../icons/icon/geo-pentagon.svg'
|
||||
import iconsGeoRectangle from '../icons/icon/geo-rectangle.svg'
|
||||
import iconsGeoRhombus2 from '../icons/icon/geo-rhombus-2.svg'
|
||||
import iconsGeoRhombus from '../icons/icon/geo-rhombus.svg'
|
||||
import iconsGeoStar from '../icons/icon/geo-star.svg'
|
||||
import iconsGeoTrapezoid from '../icons/icon/geo-trapezoid.svg'
|
||||
import iconsGeoTriangle from '../icons/icon/geo-triangle.svg'
|
||||
import iconsGeoXBox from '../icons/icon/geo-x-box.svg'
|
||||
import iconsGithub from '../icons/icon/github.svg'
|
||||
import iconsGroup from '../icons/icon/group.svg'
|
||||
import iconsHidden from '../icons/icon/hidden.svg'
|
||||
import iconsImage from '../icons/icon/image.svg'
|
||||
import iconsInfoCircle from '../icons/icon/info-circle.svg'
|
||||
import iconsLeading from '../icons/icon/leading.svg'
|
||||
import iconsLink from '../icons/icon/link.svg'
|
||||
import iconsLockSmall from '../icons/icon/lock-small.svg'
|
||||
import iconsLock from '../icons/icon/lock.svg'
|
||||
import iconsMenu from '../icons/icon/menu.svg'
|
||||
import iconsMinus from '../icons/icon/minus.svg'
|
||||
import iconsMixed from '../icons/icon/mixed.svg'
|
||||
import iconsPack from '../icons/icon/pack.svg'
|
||||
import iconsPage from '../icons/icon/page.svg'
|
||||
import iconsPlus from '../icons/icon/plus.svg'
|
||||
import iconsQuestionMarkCircle from '../icons/icon/question-mark-circle.svg'
|
||||
import iconsQuestionMark from '../icons/icon/question-mark.svg'
|
||||
import iconsRedo from '../icons/icon/redo.svg'
|
||||
import iconsResetZoom from '../icons/icon/reset-zoom.svg'
|
||||
import iconsRotateCcw from '../icons/icon/rotate-ccw.svg'
|
||||
import iconsRotateCw from '../icons/icon/rotate-cw.svg'
|
||||
import iconsRuler from '../icons/icon/ruler.svg'
|
||||
import iconsSearch from '../icons/icon/search.svg'
|
||||
import iconsSendBackward from '../icons/icon/send-backward.svg'
|
||||
import iconsSendToBack from '../icons/icon/send-to-back.svg'
|
||||
import iconsSettingsHorizontal from '../icons/icon/settings-horizontal.svg'
|
||||
import iconsSettingsVertical1 from '../icons/icon/settings-vertical-1.svg'
|
||||
import iconsSettingsVertical from '../icons/icon/settings-vertical.svg'
|
||||
import iconsShare1 from '../icons/icon/share-1.svg'
|
||||
import iconsShare2 from '../icons/icon/share-2.svg'
|
||||
import iconsSizeExtraLarge from '../icons/icon/size-extra-large.svg'
|
||||
import iconsSizeLarge from '../icons/icon/size-large.svg'
|
||||
import iconsSizeMedium from '../icons/icon/size-medium.svg'
|
||||
import iconsSizeSmall from '../icons/icon/size-small.svg'
|
||||
import iconsSplineCubic from '../icons/icon/spline-cubic.svg'
|
||||
import iconsSplineLine from '../icons/icon/spline-line.svg'
|
||||
import iconsStackHorizontal from '../icons/icon/stack-horizontal.svg'
|
||||
import iconsStackVertical from '../icons/icon/stack-vertical.svg'
|
||||
import iconsStretchHorizontal from '../icons/icon/stretch-horizontal.svg'
|
||||
import iconsStretchVertical from '../icons/icon/stretch-vertical.svg'
|
||||
import iconsTextAlignCenter from '../icons/icon/text-align-center.svg'
|
||||
import iconsTextAlignJustify from '../icons/icon/text-align-justify.svg'
|
||||
import iconsTextAlignLeft from '../icons/icon/text-align-left.svg'
|
||||
import iconsTextAlignRight from '../icons/icon/text-align-right.svg'
|
||||
import iconsToolArrow from '../icons/icon/tool-arrow.svg'
|
||||
import iconsToolEmbed from '../icons/icon/tool-embed.svg'
|
||||
import iconsToolEraser from '../icons/icon/tool-eraser.svg'
|
||||
import iconsToolFrame from '../icons/icon/tool-frame.svg'
|
||||
import iconsToolHand from '../icons/icon/tool-hand.svg'
|
||||
import iconsToolHighlighter from '../icons/icon/tool-highlighter.svg'
|
||||
import iconsToolLine from '../icons/icon/tool-line.svg'
|
||||
import iconsToolMedia from '../icons/icon/tool-media.svg'
|
||||
import iconsToolNote from '../icons/icon/tool-note.svg'
|
||||
import iconsToolPencil from '../icons/icon/tool-pencil.svg'
|
||||
import iconsToolPointer from '../icons/icon/tool-pointer.svg'
|
||||
import iconsToolText from '../icons/icon/tool-text.svg'
|
||||
import iconsTrash from '../icons/icon/trash.svg'
|
||||
import iconsTriangleDown from '../icons/icon/triangle-down.svg'
|
||||
import iconsTriangleUp from '../icons/icon/triangle-up.svg'
|
||||
import iconsTwitter from '../icons/icon/twitter.svg'
|
||||
import iconsUndo from '../icons/icon/undo.svg'
|
||||
import iconsUngroup from '../icons/icon/ungroup.svg'
|
||||
import iconsUnlockSmall from '../icons/icon/unlock-small.svg'
|
||||
import iconsUnlock from '../icons/icon/unlock.svg'
|
||||
import iconsVisible from '../icons/icon/visible.svg'
|
||||
import iconsWarningTriangle from '../icons/icon/warning-triangle.svg'
|
||||
import iconsZoomIn from '../icons/icon/zoom-in.svg'
|
||||
import iconsZoomOut from '../icons/icon/zoom-out.svg'
|
||||
import translationsAr from '../translations/ar.json'
|
||||
import translationsCa from '../translations/ca.json'
|
||||
import translationsDa from '../translations/da.json'
|
||||
import translationsDe from '../translations/de.json'
|
||||
import translationsEn from '../translations/en.json'
|
||||
import translationsEs from '../translations/es.json'
|
||||
import translationsFa from '../translations/fa.json'
|
||||
import translationsFi from '../translations/fi.json'
|
||||
import translationsFr from '../translations/fr.json'
|
||||
import translationsGl from '../translations/gl.json'
|
||||
import translationsHe from '../translations/he.json'
|
||||
import translationsHiIn from '../translations/hi-in.json'
|
||||
import translationsHu from '../translations/hu.json'
|
||||
import translationsIt from '../translations/it.json'
|
||||
import translationsJa from '../translations/ja.json'
|
||||
import translationsKoKr from '../translations/ko-kr.json'
|
||||
import translationsKu from '../translations/ku.json'
|
||||
import translationsLanguages from '../translations/languages.json'
|
||||
import translationsMain from '../translations/main.json'
|
||||
import translationsMy from '../translations/my.json'
|
||||
import translationsNe from '../translations/ne.json'
|
||||
import translationsNo from '../translations/no.json'
|
||||
import translationsPl from '../translations/pl.json'
|
||||
import translationsPtBr from '../translations/pt-br.json'
|
||||
import translationsPtPt from '../translations/pt-pt.json'
|
||||
import translationsRo from '../translations/ro.json'
|
||||
import translationsRu from '../translations/ru.json'
|
||||
import translationsSv from '../translations/sv.json'
|
||||
import translationsTe from '../translations/te.json'
|
||||
import translationsTh from '../translations/th.json'
|
||||
import translationsTr from '../translations/tr.json'
|
||||
import translationsUk from '../translations/uk.json'
|
||||
import translationsVi from '../translations/vi.json'
|
||||
import translationsZhCn from '../translations/zh-cn.json'
|
||||
import translationsZhTw from '../translations/zh-tw.json'
|
||||
import { AssetUrlOptions, formatAssetUrl } from './utils'
|
||||
|
||||
/** @public */
|
||||
export function getBundlerAssetUrls(opts?: AssetUrlOptions) {
|
||||
return {
|
||||
fonts: {
|
||||
monospace: formatAssetUrl(fontsMonospace, opts),
|
||||
sansSerif: formatAssetUrl(fontsSansSerif, opts),
|
||||
serif: formatAssetUrl(fontsSerif, opts),
|
||||
draw: formatAssetUrl(fontsDraw, opts),
|
||||
},
|
||||
icons: {
|
||||
'align-bottom-center': formatAssetUrl(iconsAlignBottomCenter, opts),
|
||||
'align-bottom-left': formatAssetUrl(iconsAlignBottomLeft, opts),
|
||||
'align-bottom-right': formatAssetUrl(iconsAlignBottomRight, opts),
|
||||
'align-bottom': formatAssetUrl(iconsAlignBottom, opts),
|
||||
'align-center-center': formatAssetUrl(iconsAlignCenterCenter, opts),
|
||||
'align-center-horizontal': formatAssetUrl(iconsAlignCenterHorizontal, opts),
|
||||
'align-center-left': formatAssetUrl(iconsAlignCenterLeft, opts),
|
||||
'align-center-right': formatAssetUrl(iconsAlignCenterRight, opts),
|
||||
'align-center-vertical': formatAssetUrl(iconsAlignCenterVertical, opts),
|
||||
'align-left': formatAssetUrl(iconsAlignLeft, opts),
|
||||
'align-right': formatAssetUrl(iconsAlignRight, opts),
|
||||
'align-top-center': formatAssetUrl(iconsAlignTopCenter, opts),
|
||||
'align-top-left': formatAssetUrl(iconsAlignTopLeft, opts),
|
||||
'align-top-right': formatAssetUrl(iconsAlignTopRight, opts),
|
||||
'align-top': formatAssetUrl(iconsAlignTop, opts),
|
||||
'arrow-left': formatAssetUrl(iconsArrowLeft, opts),
|
||||
'arrowhead-arrow': formatAssetUrl(iconsArrowheadArrow, opts),
|
||||
'arrowhead-bar': formatAssetUrl(iconsArrowheadBar, opts),
|
||||
'arrowhead-diamond': formatAssetUrl(iconsArrowheadDiamond, opts),
|
||||
'arrowhead-dot': formatAssetUrl(iconsArrowheadDot, opts),
|
||||
'arrowhead-none': formatAssetUrl(iconsArrowheadNone, opts),
|
||||
'arrowhead-square': formatAssetUrl(iconsArrowheadSquare, opts),
|
||||
'arrowhead-triangle-inverted': formatAssetUrl(iconsArrowheadTriangleInverted, opts),
|
||||
'arrowhead-triangle': formatAssetUrl(iconsArrowheadTriangle, opts),
|
||||
'aspect-ratio': formatAssetUrl(iconsAspectRatio, opts),
|
||||
avatar: formatAssetUrl(iconsAvatar, opts),
|
||||
blob: formatAssetUrl(iconsBlob, opts),
|
||||
'bring-forward': formatAssetUrl(iconsBringForward, opts),
|
||||
'bring-to-front': formatAssetUrl(iconsBringToFront, opts),
|
||||
check: formatAssetUrl(iconsCheck, opts),
|
||||
'checkbox-checked': formatAssetUrl(iconsCheckboxChecked, opts),
|
||||
'checkbox-empty': formatAssetUrl(iconsCheckboxEmpty, opts),
|
||||
'chevron-down': formatAssetUrl(iconsChevronDown, opts),
|
||||
'chevron-left': formatAssetUrl(iconsChevronLeft, opts),
|
||||
'chevron-right': formatAssetUrl(iconsChevronRight, opts),
|
||||
'chevron-up': formatAssetUrl(iconsChevronUp, opts),
|
||||
'chevrons-ne': formatAssetUrl(iconsChevronsNe, opts),
|
||||
'chevrons-sw': formatAssetUrl(iconsChevronsSw, opts),
|
||||
'clipboard-copy': formatAssetUrl(iconsClipboardCopy, opts),
|
||||
code: formatAssetUrl(iconsCode, opts),
|
||||
collab: formatAssetUrl(iconsCollab, opts),
|
||||
color: formatAssetUrl(iconsColor, opts),
|
||||
comment: formatAssetUrl(iconsComment, opts),
|
||||
'cross-2': formatAssetUrl(iconsCross2, opts),
|
||||
cross: formatAssetUrl(iconsCross, opts),
|
||||
'dash-dashed': formatAssetUrl(iconsDashDashed, opts),
|
||||
'dash-dotted': formatAssetUrl(iconsDashDotted, opts),
|
||||
'dash-draw': formatAssetUrl(iconsDashDraw, opts),
|
||||
'dash-solid': formatAssetUrl(iconsDashSolid, opts),
|
||||
discord: formatAssetUrl(iconsDiscord, opts),
|
||||
'distribute-horizontal': formatAssetUrl(iconsDistributeHorizontal, opts),
|
||||
'distribute-vertical': formatAssetUrl(iconsDistributeVertical, opts),
|
||||
dot: formatAssetUrl(iconsDot, opts),
|
||||
'dots-horizontal': formatAssetUrl(iconsDotsHorizontal, opts),
|
||||
'dots-vertical': formatAssetUrl(iconsDotsVertical, opts),
|
||||
'drag-handle-dots': formatAssetUrl(iconsDragHandleDots, opts),
|
||||
duplicate: formatAssetUrl(iconsDuplicate, opts),
|
||||
edit: formatAssetUrl(iconsEdit, opts),
|
||||
'external-link': formatAssetUrl(iconsExternalLink, opts),
|
||||
file: formatAssetUrl(iconsFile, opts),
|
||||
'fill-none': formatAssetUrl(iconsFillNone, opts),
|
||||
'fill-pattern': formatAssetUrl(iconsFillPattern, opts),
|
||||
'fill-semi': formatAssetUrl(iconsFillSemi, opts),
|
||||
'fill-solid': formatAssetUrl(iconsFillSolid, opts),
|
||||
follow: formatAssetUrl(iconsFollow, opts),
|
||||
following: formatAssetUrl(iconsFollowing, opts),
|
||||
'font-draw': formatAssetUrl(iconsFontDraw, opts),
|
||||
'font-mono': formatAssetUrl(iconsFontMono, opts),
|
||||
'font-sans': formatAssetUrl(iconsFontSans, opts),
|
||||
'font-serif': formatAssetUrl(iconsFontSerif, opts),
|
||||
'geo-arrow-down': formatAssetUrl(iconsGeoArrowDown, opts),
|
||||
'geo-arrow-left': formatAssetUrl(iconsGeoArrowLeft, opts),
|
||||
'geo-arrow-right': formatAssetUrl(iconsGeoArrowRight, opts),
|
||||
'geo-arrow-up': formatAssetUrl(iconsGeoArrowUp, opts),
|
||||
'geo-diamond': formatAssetUrl(iconsGeoDiamond, opts),
|
||||
'geo-ellipse': formatAssetUrl(iconsGeoEllipse, opts),
|
||||
'geo-hexagon': formatAssetUrl(iconsGeoHexagon, opts),
|
||||
'geo-octagon': formatAssetUrl(iconsGeoOctagon, opts),
|
||||
'geo-oval': formatAssetUrl(iconsGeoOval, opts),
|
||||
'geo-pentagon': formatAssetUrl(iconsGeoPentagon, opts),
|
||||
'geo-rectangle': formatAssetUrl(iconsGeoRectangle, opts),
|
||||
'geo-rhombus-2': formatAssetUrl(iconsGeoRhombus2, opts),
|
||||
'geo-rhombus': formatAssetUrl(iconsGeoRhombus, opts),
|
||||
'geo-star': formatAssetUrl(iconsGeoStar, opts),
|
||||
'geo-trapezoid': formatAssetUrl(iconsGeoTrapezoid, opts),
|
||||
'geo-triangle': formatAssetUrl(iconsGeoTriangle, opts),
|
||||
'geo-x-box': formatAssetUrl(iconsGeoXBox, opts),
|
||||
github: formatAssetUrl(iconsGithub, opts),
|
||||
group: formatAssetUrl(iconsGroup, opts),
|
||||
hidden: formatAssetUrl(iconsHidden, opts),
|
||||
image: formatAssetUrl(iconsImage, opts),
|
||||
'info-circle': formatAssetUrl(iconsInfoCircle, opts),
|
||||
leading: formatAssetUrl(iconsLeading, opts),
|
||||
link: formatAssetUrl(iconsLink, opts),
|
||||
'lock-small': formatAssetUrl(iconsLockSmall, opts),
|
||||
lock: formatAssetUrl(iconsLock, opts),
|
||||
menu: formatAssetUrl(iconsMenu, opts),
|
||||
minus: formatAssetUrl(iconsMinus, opts),
|
||||
mixed: formatAssetUrl(iconsMixed, opts),
|
||||
pack: formatAssetUrl(iconsPack, opts),
|
||||
page: formatAssetUrl(iconsPage, opts),
|
||||
plus: formatAssetUrl(iconsPlus, opts),
|
||||
'question-mark-circle': formatAssetUrl(iconsQuestionMarkCircle, opts),
|
||||
'question-mark': formatAssetUrl(iconsQuestionMark, opts),
|
||||
redo: formatAssetUrl(iconsRedo, opts),
|
||||
'reset-zoom': formatAssetUrl(iconsResetZoom, opts),
|
||||
'rotate-ccw': formatAssetUrl(iconsRotateCcw, opts),
|
||||
'rotate-cw': formatAssetUrl(iconsRotateCw, opts),
|
||||
ruler: formatAssetUrl(iconsRuler, opts),
|
||||
search: formatAssetUrl(iconsSearch, opts),
|
||||
'send-backward': formatAssetUrl(iconsSendBackward, opts),
|
||||
'send-to-back': formatAssetUrl(iconsSendToBack, opts),
|
||||
'settings-horizontal': formatAssetUrl(iconsSettingsHorizontal, opts),
|
||||
'settings-vertical-1': formatAssetUrl(iconsSettingsVertical1, opts),
|
||||
'settings-vertical': formatAssetUrl(iconsSettingsVertical, opts),
|
||||
'share-1': formatAssetUrl(iconsShare1, opts),
|
||||
'share-2': formatAssetUrl(iconsShare2, opts),
|
||||
'size-extra-large': formatAssetUrl(iconsSizeExtraLarge, opts),
|
||||
'size-large': formatAssetUrl(iconsSizeLarge, opts),
|
||||
'size-medium': formatAssetUrl(iconsSizeMedium, opts),
|
||||
'size-small': formatAssetUrl(iconsSizeSmall, opts),
|
||||
'spline-cubic': formatAssetUrl(iconsSplineCubic, opts),
|
||||
'spline-line': formatAssetUrl(iconsSplineLine, opts),
|
||||
'stack-horizontal': formatAssetUrl(iconsStackHorizontal, opts),
|
||||
'stack-vertical': formatAssetUrl(iconsStackVertical, opts),
|
||||
'stretch-horizontal': formatAssetUrl(iconsStretchHorizontal, opts),
|
||||
'stretch-vertical': formatAssetUrl(iconsStretchVertical, opts),
|
||||
'text-align-center': formatAssetUrl(iconsTextAlignCenter, opts),
|
||||
'text-align-justify': formatAssetUrl(iconsTextAlignJustify, opts),
|
||||
'text-align-left': formatAssetUrl(iconsTextAlignLeft, opts),
|
||||
'text-align-right': formatAssetUrl(iconsTextAlignRight, opts),
|
||||
'tool-arrow': formatAssetUrl(iconsToolArrow, opts),
|
||||
'tool-embed': formatAssetUrl(iconsToolEmbed, opts),
|
||||
'tool-eraser': formatAssetUrl(iconsToolEraser, opts),
|
||||
'tool-frame': formatAssetUrl(iconsToolFrame, opts),
|
||||
'tool-hand': formatAssetUrl(iconsToolHand, opts),
|
||||
'tool-highlighter': formatAssetUrl(iconsToolHighlighter, opts),
|
||||
'tool-line': formatAssetUrl(iconsToolLine, opts),
|
||||
'tool-media': formatAssetUrl(iconsToolMedia, opts),
|
||||
'tool-note': formatAssetUrl(iconsToolNote, opts),
|
||||
'tool-pencil': formatAssetUrl(iconsToolPencil, opts),
|
||||
'tool-pointer': formatAssetUrl(iconsToolPointer, opts),
|
||||
'tool-text': formatAssetUrl(iconsToolText, opts),
|
||||
trash: formatAssetUrl(iconsTrash, opts),
|
||||
'triangle-down': formatAssetUrl(iconsTriangleDown, opts),
|
||||
'triangle-up': formatAssetUrl(iconsTriangleUp, opts),
|
||||
twitter: formatAssetUrl(iconsTwitter, opts),
|
||||
undo: formatAssetUrl(iconsUndo, opts),
|
||||
ungroup: formatAssetUrl(iconsUngroup, opts),
|
||||
'unlock-small': formatAssetUrl(iconsUnlockSmall, opts),
|
||||
unlock: formatAssetUrl(iconsUnlock, opts),
|
||||
visible: formatAssetUrl(iconsVisible, opts),
|
||||
'warning-triangle': formatAssetUrl(iconsWarningTriangle, opts),
|
||||
'zoom-in': formatAssetUrl(iconsZoomIn, opts),
|
||||
'zoom-out': formatAssetUrl(iconsZoomOut, opts),
|
||||
},
|
||||
translations: {
|
||||
ar: formatAssetUrl(translationsAr, opts),
|
||||
ca: formatAssetUrl(translationsCa, opts),
|
||||
da: formatAssetUrl(translationsDa, opts),
|
||||
de: formatAssetUrl(translationsDe, opts),
|
||||
en: formatAssetUrl(translationsEn, opts),
|
||||
es: formatAssetUrl(translationsEs, opts),
|
||||
fa: formatAssetUrl(translationsFa, opts),
|
||||
fi: formatAssetUrl(translationsFi, opts),
|
||||
fr: formatAssetUrl(translationsFr, opts),
|
||||
gl: formatAssetUrl(translationsGl, opts),
|
||||
he: formatAssetUrl(translationsHe, opts),
|
||||
'hi-in': formatAssetUrl(translationsHiIn, opts),
|
||||
hu: formatAssetUrl(translationsHu, opts),
|
||||
it: formatAssetUrl(translationsIt, opts),
|
||||
ja: formatAssetUrl(translationsJa, opts),
|
||||
'ko-kr': formatAssetUrl(translationsKoKr, opts),
|
||||
ku: formatAssetUrl(translationsKu, opts),
|
||||
languages: formatAssetUrl(translationsLanguages, opts),
|
||||
main: formatAssetUrl(translationsMain, opts),
|
||||
my: formatAssetUrl(translationsMy, opts),
|
||||
ne: formatAssetUrl(translationsNe, opts),
|
||||
no: formatAssetUrl(translationsNo, opts),
|
||||
pl: formatAssetUrl(translationsPl, opts),
|
||||
'pt-br': formatAssetUrl(translationsPtBr, opts),
|
||||
'pt-pt': formatAssetUrl(translationsPtPt, opts),
|
||||
ro: formatAssetUrl(translationsRo, opts),
|
||||
ru: formatAssetUrl(translationsRu, opts),
|
||||
sv: formatAssetUrl(translationsSv, opts),
|
||||
te: formatAssetUrl(translationsTe, opts),
|
||||
th: formatAssetUrl(translationsTh, opts),
|
||||
tr: formatAssetUrl(translationsTr, opts),
|
||||
uk: formatAssetUrl(translationsUk, opts),
|
||||
vi: formatAssetUrl(translationsVi, opts),
|
||||
'zh-cn': formatAssetUrl(translationsZhCn, opts),
|
||||
'zh-tw': formatAssetUrl(translationsZhTw, opts),
|
||||
},
|
||||
embedIcons: {
|
||||
codepen: formatAssetUrl(embedIconsCodepen, opts),
|
||||
codesandbox: formatAssetUrl(embedIconsCodesandbox, opts),
|
||||
excalidraw: formatAssetUrl(embedIconsExcalidraw, opts),
|
||||
felt: formatAssetUrl(embedIconsFelt, opts),
|
||||
figma: formatAssetUrl(embedIconsFigma, opts),
|
||||
github_gist: formatAssetUrl(embedIconsGithubGist, opts),
|
||||
google_calendar: formatAssetUrl(embedIconsGoogleCalendar, opts),
|
||||
google_maps: formatAssetUrl(embedIconsGoogleMaps, opts),
|
||||
google_slides: formatAssetUrl(embedIconsGoogleSlides, opts),
|
||||
observable: formatAssetUrl(embedIconsObservable, opts),
|
||||
replit: formatAssetUrl(embedIconsReplit, opts),
|
||||
scratch: formatAssetUrl(embedIconsScratch, opts),
|
||||
spotify: formatAssetUrl(embedIconsSpotify, opts),
|
||||
tldraw: formatAssetUrl(embedIconsTldraw, opts),
|
||||
vimeo: formatAssetUrl(embedIconsVimeo, opts),
|
||||
youtube: formatAssetUrl(embedIconsYoutube, opts),
|
||||
},
|
||||
} as const
|
||||
}
|
|
@ -1,440 +1 @@
|
|||
// This file is automatically generated by scripts/refresh-assets.ts.
|
||||
// Do not edit manually.
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/triple-slash-reference
|
||||
/// <reference path="../modules.d.ts" />
|
||||
import codepenEmbedIconUrl from '../embed-icons/codepen.png'
|
||||
import codesandboxEmbedIconUrl from '../embed-icons/codesandbox.png'
|
||||
import excalidrawEmbedIconUrl from '../embed-icons/excalidraw.png'
|
||||
import feltEmbedIconUrl from '../embed-icons/felt.png'
|
||||
import figmaEmbedIconUrl from '../embed-icons/figma.png'
|
||||
import githubGistEmbedIconUrl from '../embed-icons/github_gist.png'
|
||||
import googleCalendarEmbedIconUrl from '../embed-icons/google_calendar.png'
|
||||
import googleMapsEmbedIconUrl from '../embed-icons/google_maps.png'
|
||||
import googleSlidesEmbedIconUrl from '../embed-icons/google_slides.png'
|
||||
import observableEmbedIconUrl from '../embed-icons/observable.png'
|
||||
import replitEmbedIconUrl from '../embed-icons/replit.png'
|
||||
import scratchEmbedIconUrl from '../embed-icons/scratch.png'
|
||||
import spotifyEmbedIconUrl from '../embed-icons/spotify.png'
|
||||
import tldrawEmbedIconUrl from '../embed-icons/tldraw.png'
|
||||
import vimeoEmbedIconUrl from '../embed-icons/vimeo.png'
|
||||
import youtubeEmbedIconUrl from '../embed-icons/youtube.png'
|
||||
import monospaceFontUrl from '../fonts/IBMPlexMono-Medium.woff2'
|
||||
import sansSerifFontUrl from '../fonts/IBMPlexSans-Medium.woff2'
|
||||
import serifFontUrl from '../fonts/IBMPlexSerif-Medium.woff2'
|
||||
import drawFontUrl from '../fonts/Shantell_Sans-Normal-SemiBold.woff2'
|
||||
import alignBottomCenterIconUrl from '../icons/icon/align-bottom-center.svg'
|
||||
import alignBottomLeftIconUrl from '../icons/icon/align-bottom-left.svg'
|
||||
import alignBottomRightIconUrl from '../icons/icon/align-bottom-right.svg'
|
||||
import alignBottomIconUrl from '../icons/icon/align-bottom.svg'
|
||||
import alignCenterCenterIconUrl from '../icons/icon/align-center-center.svg'
|
||||
import alignCenterHorizontalIconUrl from '../icons/icon/align-center-horizontal.svg'
|
||||
import alignCenterLeftIconUrl from '../icons/icon/align-center-left.svg'
|
||||
import alignCenterRightIconUrl from '../icons/icon/align-center-right.svg'
|
||||
import alignCenterVerticalIconUrl from '../icons/icon/align-center-vertical.svg'
|
||||
import alignLeftIconUrl from '../icons/icon/align-left.svg'
|
||||
import alignRightIconUrl from '../icons/icon/align-right.svg'
|
||||
import alignTopCenterIconUrl from '../icons/icon/align-top-center.svg'
|
||||
import alignTopLeftIconUrl from '../icons/icon/align-top-left.svg'
|
||||
import alignTopRightIconUrl from '../icons/icon/align-top-right.svg'
|
||||
import alignTopIconUrl from '../icons/icon/align-top.svg'
|
||||
import arrowLeftIconUrl from '../icons/icon/arrow-left.svg'
|
||||
import arrowheadArrowIconUrl from '../icons/icon/arrowhead-arrow.svg'
|
||||
import arrowheadBarIconUrl from '../icons/icon/arrowhead-bar.svg'
|
||||
import arrowheadDiamondIconUrl from '../icons/icon/arrowhead-diamond.svg'
|
||||
import arrowheadDotIconUrl from '../icons/icon/arrowhead-dot.svg'
|
||||
import arrowheadNoneIconUrl from '../icons/icon/arrowhead-none.svg'
|
||||
import arrowheadSquareIconUrl from '../icons/icon/arrowhead-square.svg'
|
||||
import arrowheadTriangleInvertedIconUrl from '../icons/icon/arrowhead-triangle-inverted.svg'
|
||||
import arrowheadTriangleIconUrl from '../icons/icon/arrowhead-triangle.svg'
|
||||
import aspectRatioIconUrl from '../icons/icon/aspect-ratio.svg'
|
||||
import avatarIconUrl from '../icons/icon/avatar.svg'
|
||||
import blobIconUrl from '../icons/icon/blob.svg'
|
||||
import bringForwardIconUrl from '../icons/icon/bring-forward.svg'
|
||||
import bringToFrontIconUrl from '../icons/icon/bring-to-front.svg'
|
||||
import checkIconUrl from '../icons/icon/check.svg'
|
||||
import checkboxCheckedIconUrl from '../icons/icon/checkbox-checked.svg'
|
||||
import checkboxEmptyIconUrl from '../icons/icon/checkbox-empty.svg'
|
||||
import chevronDownIconUrl from '../icons/icon/chevron-down.svg'
|
||||
import chevronLeftIconUrl from '../icons/icon/chevron-left.svg'
|
||||
import chevronRightIconUrl from '../icons/icon/chevron-right.svg'
|
||||
import chevronUpIconUrl from '../icons/icon/chevron-up.svg'
|
||||
import chevronsNeIconUrl from '../icons/icon/chevrons-ne.svg'
|
||||
import chevronsSwIconUrl from '../icons/icon/chevrons-sw.svg'
|
||||
import clipboardCopyIconUrl from '../icons/icon/clipboard-copy.svg'
|
||||
import codeIconUrl from '../icons/icon/code.svg'
|
||||
import collabIconUrl from '../icons/icon/collab.svg'
|
||||
import colorIconUrl from '../icons/icon/color.svg'
|
||||
import commentIconUrl from '../icons/icon/comment.svg'
|
||||
import cross2IconUrl from '../icons/icon/cross-2.svg'
|
||||
import crossIconUrl from '../icons/icon/cross.svg'
|
||||
import dashDashedIconUrl from '../icons/icon/dash-dashed.svg'
|
||||
import dashDottedIconUrl from '../icons/icon/dash-dotted.svg'
|
||||
import dashDrawIconUrl from '../icons/icon/dash-draw.svg'
|
||||
import dashSolidIconUrl from '../icons/icon/dash-solid.svg'
|
||||
import discordIconUrl from '../icons/icon/discord.svg'
|
||||
import distributeHorizontalIconUrl from '../icons/icon/distribute-horizontal.svg'
|
||||
import distributeVerticalIconUrl from '../icons/icon/distribute-vertical.svg'
|
||||
import dotIconUrl from '../icons/icon/dot.svg'
|
||||
import dotsHorizontalIconUrl from '../icons/icon/dots-horizontal.svg'
|
||||
import dotsVerticalIconUrl from '../icons/icon/dots-vertical.svg'
|
||||
import dragHandleDotsIconUrl from '../icons/icon/drag-handle-dots.svg'
|
||||
import duplicateIconUrl from '../icons/icon/duplicate.svg'
|
||||
import editIconUrl from '../icons/icon/edit.svg'
|
||||
import externalLinkIconUrl from '../icons/icon/external-link.svg'
|
||||
import fileIconUrl from '../icons/icon/file.svg'
|
||||
import fillNoneIconUrl from '../icons/icon/fill-none.svg'
|
||||
import fillPatternIconUrl from '../icons/icon/fill-pattern.svg'
|
||||
import fillSemiIconUrl from '../icons/icon/fill-semi.svg'
|
||||
import fillSolidIconUrl from '../icons/icon/fill-solid.svg'
|
||||
import followIconUrl from '../icons/icon/follow.svg'
|
||||
import followingIconUrl from '../icons/icon/following.svg'
|
||||
import fontDrawIconUrl from '../icons/icon/font-draw.svg'
|
||||
import fontMonoIconUrl from '../icons/icon/font-mono.svg'
|
||||
import fontSansIconUrl from '../icons/icon/font-sans.svg'
|
||||
import fontSerifIconUrl from '../icons/icon/font-serif.svg'
|
||||
import geoArrowDownIconUrl from '../icons/icon/geo-arrow-down.svg'
|
||||
import geoArrowLeftIconUrl from '../icons/icon/geo-arrow-left.svg'
|
||||
import geoArrowRightIconUrl from '../icons/icon/geo-arrow-right.svg'
|
||||
import geoArrowUpIconUrl from '../icons/icon/geo-arrow-up.svg'
|
||||
import geoDiamondIconUrl from '../icons/icon/geo-diamond.svg'
|
||||
import geoEllipseIconUrl from '../icons/icon/geo-ellipse.svg'
|
||||
import geoHexagonIconUrl from '../icons/icon/geo-hexagon.svg'
|
||||
import geoOctagonIconUrl from '../icons/icon/geo-octagon.svg'
|
||||
import geoOvalIconUrl from '../icons/icon/geo-oval.svg'
|
||||
import geoPentagonIconUrl from '../icons/icon/geo-pentagon.svg'
|
||||
import geoRectangleIconUrl from '../icons/icon/geo-rectangle.svg'
|
||||
import geoRhombus2IconUrl from '../icons/icon/geo-rhombus-2.svg'
|
||||
import geoRhombusIconUrl from '../icons/icon/geo-rhombus.svg'
|
||||
import geoStarIconUrl from '../icons/icon/geo-star.svg'
|
||||
import geoTrapezoidIconUrl from '../icons/icon/geo-trapezoid.svg'
|
||||
import geoTriangleIconUrl from '../icons/icon/geo-triangle.svg'
|
||||
import geoXBoxIconUrl from '../icons/icon/geo-x-box.svg'
|
||||
import githubIconUrl from '../icons/icon/github.svg'
|
||||
import groupIconUrl from '../icons/icon/group.svg'
|
||||
import hiddenIconUrl from '../icons/icon/hidden.svg'
|
||||
import imageIconUrl from '../icons/icon/image.svg'
|
||||
import infoCircleIconUrl from '../icons/icon/info-circle.svg'
|
||||
import leadingIconUrl from '../icons/icon/leading.svg'
|
||||
import linkIconUrl from '../icons/icon/link.svg'
|
||||
import lockSmallIconUrl from '../icons/icon/lock-small.svg'
|
||||
import lockIconUrl from '../icons/icon/lock.svg'
|
||||
import menuIconUrl from '../icons/icon/menu.svg'
|
||||
import minusIconUrl from '../icons/icon/minus.svg'
|
||||
import mixedIconUrl from '../icons/icon/mixed.svg'
|
||||
import packIconUrl from '../icons/icon/pack.svg'
|
||||
import pageIconUrl from '../icons/icon/page.svg'
|
||||
import plusIconUrl from '../icons/icon/plus.svg'
|
||||
import questionMarkCircleIconUrl from '../icons/icon/question-mark-circle.svg'
|
||||
import questionMarkIconUrl from '../icons/icon/question-mark.svg'
|
||||
import redoIconUrl from '../icons/icon/redo.svg'
|
||||
import resetZoomIconUrl from '../icons/icon/reset-zoom.svg'
|
||||
import rotateCcwIconUrl from '../icons/icon/rotate-ccw.svg'
|
||||
import rotateCwIconUrl from '../icons/icon/rotate-cw.svg'
|
||||
import rulerIconUrl from '../icons/icon/ruler.svg'
|
||||
import searchIconUrl from '../icons/icon/search.svg'
|
||||
import sendBackwardIconUrl from '../icons/icon/send-backward.svg'
|
||||
import sendToBackIconUrl from '../icons/icon/send-to-back.svg'
|
||||
import settingsHorizontalIconUrl from '../icons/icon/settings-horizontal.svg'
|
||||
import settingsVertical1IconUrl from '../icons/icon/settings-vertical-1.svg'
|
||||
import settingsVerticalIconUrl from '../icons/icon/settings-vertical.svg'
|
||||
import share1IconUrl from '../icons/icon/share-1.svg'
|
||||
import share2IconUrl from '../icons/icon/share-2.svg'
|
||||
import sizeExtraLargeIconUrl from '../icons/icon/size-extra-large.svg'
|
||||
import sizeLargeIconUrl from '../icons/icon/size-large.svg'
|
||||
import sizeMediumIconUrl from '../icons/icon/size-medium.svg'
|
||||
import sizeSmallIconUrl from '../icons/icon/size-small.svg'
|
||||
import splineCubicIconUrl from '../icons/icon/spline-cubic.svg'
|
||||
import splineLineIconUrl from '../icons/icon/spline-line.svg'
|
||||
import stackHorizontalIconUrl from '../icons/icon/stack-horizontal.svg'
|
||||
import stackVerticalIconUrl from '../icons/icon/stack-vertical.svg'
|
||||
import stretchHorizontalIconUrl from '../icons/icon/stretch-horizontal.svg'
|
||||
import stretchVerticalIconUrl from '../icons/icon/stretch-vertical.svg'
|
||||
import textAlignCenterIconUrl from '../icons/icon/text-align-center.svg'
|
||||
import textAlignJustifyIconUrl from '../icons/icon/text-align-justify.svg'
|
||||
import textAlignLeftIconUrl from '../icons/icon/text-align-left.svg'
|
||||
import textAlignRightIconUrl from '../icons/icon/text-align-right.svg'
|
||||
import toolArrowIconUrl from '../icons/icon/tool-arrow.svg'
|
||||
import toolEmbedIconUrl from '../icons/icon/tool-embed.svg'
|
||||
import toolEraserIconUrl from '../icons/icon/tool-eraser.svg'
|
||||
import toolFrameIconUrl from '../icons/icon/tool-frame.svg'
|
||||
import toolHandIconUrl from '../icons/icon/tool-hand.svg'
|
||||
import toolHighlighterIconUrl from '../icons/icon/tool-highlighter.svg'
|
||||
import toolLineIconUrl from '../icons/icon/tool-line.svg'
|
||||
import toolMediaIconUrl from '../icons/icon/tool-media.svg'
|
||||
import toolNoteIconUrl from '../icons/icon/tool-note.svg'
|
||||
import toolPencilIconUrl from '../icons/icon/tool-pencil.svg'
|
||||
import toolPointerIconUrl from '../icons/icon/tool-pointer.svg'
|
||||
import toolTextIconUrl from '../icons/icon/tool-text.svg'
|
||||
import trashIconUrl from '../icons/icon/trash.svg'
|
||||
import triangleDownIconUrl from '../icons/icon/triangle-down.svg'
|
||||
import triangleUpIconUrl from '../icons/icon/triangle-up.svg'
|
||||
import twitterIconUrl from '../icons/icon/twitter.svg'
|
||||
import undoIconUrl from '../icons/icon/undo.svg'
|
||||
import ungroupIconUrl from '../icons/icon/ungroup.svg'
|
||||
import unlockSmallIconUrl from '../icons/icon/unlock-small.svg'
|
||||
import unlockIconUrl from '../icons/icon/unlock.svg'
|
||||
import visibleIconUrl from '../icons/icon/visible.svg'
|
||||
import warningTriangleIconUrl from '../icons/icon/warning-triangle.svg'
|
||||
import zoomInIconUrl from '../icons/icon/zoom-in.svg'
|
||||
import zoomOutIconUrl from '../icons/icon/zoom-out.svg'
|
||||
import arTranslationUrl from '../translations/ar.json'
|
||||
import caTranslationUrl from '../translations/ca.json'
|
||||
import daTranslationUrl from '../translations/da.json'
|
||||
import deTranslationUrl from '../translations/de.json'
|
||||
import enTranslationUrl from '../translations/en.json'
|
||||
import esTranslationUrl from '../translations/es.json'
|
||||
import faTranslationUrl from '../translations/fa.json'
|
||||
import fiTranslationUrl from '../translations/fi.json'
|
||||
import frTranslationUrl from '../translations/fr.json'
|
||||
import glTranslationUrl from '../translations/gl.json'
|
||||
import heTranslationUrl from '../translations/he.json'
|
||||
import hiInTranslationUrl from '../translations/hi-in.json'
|
||||
import huTranslationUrl from '../translations/hu.json'
|
||||
import itTranslationUrl from '../translations/it.json'
|
||||
import jaTranslationUrl from '../translations/ja.json'
|
||||
import koKrTranslationUrl from '../translations/ko-kr.json'
|
||||
import kuTranslationUrl from '../translations/ku.json'
|
||||
import languagesTranslationUrl from '../translations/languages.json'
|
||||
import mainTranslationUrl from '../translations/main.json'
|
||||
import myTranslationUrl from '../translations/my.json'
|
||||
import neTranslationUrl from '../translations/ne.json'
|
||||
import noTranslationUrl from '../translations/no.json'
|
||||
import plTranslationUrl from '../translations/pl.json'
|
||||
import ptBrTranslationUrl from '../translations/pt-br.json'
|
||||
import ptPtTranslationUrl from '../translations/pt-pt.json'
|
||||
import roTranslationUrl from '../translations/ro.json'
|
||||
import ruTranslationUrl from '../translations/ru.json'
|
||||
import svTranslationUrl from '../translations/sv.json'
|
||||
import teTranslationUrl from '../translations/te.json'
|
||||
import thTranslationUrl from '../translations/th.json'
|
||||
import trTranslationUrl from '../translations/tr.json'
|
||||
import ukTranslationUrl from '../translations/uk.json'
|
||||
import viTranslationUrl from '../translations/vi.json'
|
||||
import zhCnTranslationUrl from '../translations/zh-cn.json'
|
||||
import zhTwTranslationUrl from '../translations/zh-tw.json'
|
||||
import { AssetUrlOptions, formatAssetUrl } from './utils'
|
||||
|
||||
/** @public */
|
||||
export function getBundlerAssetUrls(opts?: AssetUrlOptions) {
|
||||
return {
|
||||
fonts: {
|
||||
monospace: formatAssetUrl(monospaceFontUrl, opts),
|
||||
sansSerif: formatAssetUrl(sansSerifFontUrl, opts),
|
||||
serif: formatAssetUrl(serifFontUrl, opts),
|
||||
draw: formatAssetUrl(drawFontUrl, opts),
|
||||
},
|
||||
icons: {
|
||||
'align-bottom-center': formatAssetUrl(alignBottomCenterIconUrl, opts),
|
||||
'align-bottom-left': formatAssetUrl(alignBottomLeftIconUrl, opts),
|
||||
'align-bottom-right': formatAssetUrl(alignBottomRightIconUrl, opts),
|
||||
'align-bottom': formatAssetUrl(alignBottomIconUrl, opts),
|
||||
'align-center-center': formatAssetUrl(alignCenterCenterIconUrl, opts),
|
||||
'align-center-horizontal': formatAssetUrl(alignCenterHorizontalIconUrl, opts),
|
||||
'align-center-left': formatAssetUrl(alignCenterLeftIconUrl, opts),
|
||||
'align-center-right': formatAssetUrl(alignCenterRightIconUrl, opts),
|
||||
'align-center-vertical': formatAssetUrl(alignCenterVerticalIconUrl, opts),
|
||||
'align-left': formatAssetUrl(alignLeftIconUrl, opts),
|
||||
'align-right': formatAssetUrl(alignRightIconUrl, opts),
|
||||
'align-top-center': formatAssetUrl(alignTopCenterIconUrl, opts),
|
||||
'align-top-left': formatAssetUrl(alignTopLeftIconUrl, opts),
|
||||
'align-top-right': formatAssetUrl(alignTopRightIconUrl, opts),
|
||||
'align-top': formatAssetUrl(alignTopIconUrl, opts),
|
||||
'arrow-left': formatAssetUrl(arrowLeftIconUrl, opts),
|
||||
'arrowhead-arrow': formatAssetUrl(arrowheadArrowIconUrl, opts),
|
||||
'arrowhead-bar': formatAssetUrl(arrowheadBarIconUrl, opts),
|
||||
'arrowhead-diamond': formatAssetUrl(arrowheadDiamondIconUrl, opts),
|
||||
'arrowhead-dot': formatAssetUrl(arrowheadDotIconUrl, opts),
|
||||
'arrowhead-none': formatAssetUrl(arrowheadNoneIconUrl, opts),
|
||||
'arrowhead-square': formatAssetUrl(arrowheadSquareIconUrl, opts),
|
||||
'arrowhead-triangle-inverted': formatAssetUrl(arrowheadTriangleInvertedIconUrl, opts),
|
||||
'arrowhead-triangle': formatAssetUrl(arrowheadTriangleIconUrl, opts),
|
||||
'aspect-ratio': formatAssetUrl(aspectRatioIconUrl, opts),
|
||||
avatar: formatAssetUrl(avatarIconUrl, opts),
|
||||
blob: formatAssetUrl(blobIconUrl, opts),
|
||||
'bring-forward': formatAssetUrl(bringForwardIconUrl, opts),
|
||||
'bring-to-front': formatAssetUrl(bringToFrontIconUrl, opts),
|
||||
check: formatAssetUrl(checkIconUrl, opts),
|
||||
'checkbox-checked': formatAssetUrl(checkboxCheckedIconUrl, opts),
|
||||
'checkbox-empty': formatAssetUrl(checkboxEmptyIconUrl, opts),
|
||||
'chevron-down': formatAssetUrl(chevronDownIconUrl, opts),
|
||||
'chevron-left': formatAssetUrl(chevronLeftIconUrl, opts),
|
||||
'chevron-right': formatAssetUrl(chevronRightIconUrl, opts),
|
||||
'chevron-up': formatAssetUrl(chevronUpIconUrl, opts),
|
||||
'chevrons-ne': formatAssetUrl(chevronsNeIconUrl, opts),
|
||||
'chevrons-sw': formatAssetUrl(chevronsSwIconUrl, opts),
|
||||
'clipboard-copy': formatAssetUrl(clipboardCopyIconUrl, opts),
|
||||
code: formatAssetUrl(codeIconUrl, opts),
|
||||
collab: formatAssetUrl(collabIconUrl, opts),
|
||||
color: formatAssetUrl(colorIconUrl, opts),
|
||||
comment: formatAssetUrl(commentIconUrl, opts),
|
||||
'cross-2': formatAssetUrl(cross2IconUrl, opts),
|
||||
cross: formatAssetUrl(crossIconUrl, opts),
|
||||
'dash-dashed': formatAssetUrl(dashDashedIconUrl, opts),
|
||||
'dash-dotted': formatAssetUrl(dashDottedIconUrl, opts),
|
||||
'dash-draw': formatAssetUrl(dashDrawIconUrl, opts),
|
||||
'dash-solid': formatAssetUrl(dashSolidIconUrl, opts),
|
||||
discord: formatAssetUrl(discordIconUrl, opts),
|
||||
'distribute-horizontal': formatAssetUrl(distributeHorizontalIconUrl, opts),
|
||||
'distribute-vertical': formatAssetUrl(distributeVerticalIconUrl, opts),
|
||||
dot: formatAssetUrl(dotIconUrl, opts),
|
||||
'dots-horizontal': formatAssetUrl(dotsHorizontalIconUrl, opts),
|
||||
'dots-vertical': formatAssetUrl(dotsVerticalIconUrl, opts),
|
||||
'drag-handle-dots': formatAssetUrl(dragHandleDotsIconUrl, opts),
|
||||
duplicate: formatAssetUrl(duplicateIconUrl, opts),
|
||||
edit: formatAssetUrl(editIconUrl, opts),
|
||||
'external-link': formatAssetUrl(externalLinkIconUrl, opts),
|
||||
file: formatAssetUrl(fileIconUrl, opts),
|
||||
'fill-none': formatAssetUrl(fillNoneIconUrl, opts),
|
||||
'fill-pattern': formatAssetUrl(fillPatternIconUrl, opts),
|
||||
'fill-semi': formatAssetUrl(fillSemiIconUrl, opts),
|
||||
'fill-solid': formatAssetUrl(fillSolidIconUrl, opts),
|
||||
follow: formatAssetUrl(followIconUrl, opts),
|
||||
following: formatAssetUrl(followingIconUrl, opts),
|
||||
'font-draw': formatAssetUrl(fontDrawIconUrl, opts),
|
||||
'font-mono': formatAssetUrl(fontMonoIconUrl, opts),
|
||||
'font-sans': formatAssetUrl(fontSansIconUrl, opts),
|
||||
'font-serif': formatAssetUrl(fontSerifIconUrl, opts),
|
||||
'geo-arrow-down': formatAssetUrl(geoArrowDownIconUrl, opts),
|
||||
'geo-arrow-left': formatAssetUrl(geoArrowLeftIconUrl, opts),
|
||||
'geo-arrow-right': formatAssetUrl(geoArrowRightIconUrl, opts),
|
||||
'geo-arrow-up': formatAssetUrl(geoArrowUpIconUrl, opts),
|
||||
'geo-diamond': formatAssetUrl(geoDiamondIconUrl, opts),
|
||||
'geo-ellipse': formatAssetUrl(geoEllipseIconUrl, opts),
|
||||
'geo-hexagon': formatAssetUrl(geoHexagonIconUrl, opts),
|
||||
'geo-octagon': formatAssetUrl(geoOctagonIconUrl, opts),
|
||||
'geo-oval': formatAssetUrl(geoOvalIconUrl, opts),
|
||||
'geo-pentagon': formatAssetUrl(geoPentagonIconUrl, opts),
|
||||
'geo-rectangle': formatAssetUrl(geoRectangleIconUrl, opts),
|
||||
'geo-rhombus-2': formatAssetUrl(geoRhombus2IconUrl, opts),
|
||||
'geo-rhombus': formatAssetUrl(geoRhombusIconUrl, opts),
|
||||
'geo-star': formatAssetUrl(geoStarIconUrl, opts),
|
||||
'geo-trapezoid': formatAssetUrl(geoTrapezoidIconUrl, opts),
|
||||
'geo-triangle': formatAssetUrl(geoTriangleIconUrl, opts),
|
||||
'geo-x-box': formatAssetUrl(geoXBoxIconUrl, opts),
|
||||
github: formatAssetUrl(githubIconUrl, opts),
|
||||
group: formatAssetUrl(groupIconUrl, opts),
|
||||
hidden: formatAssetUrl(hiddenIconUrl, opts),
|
||||
image: formatAssetUrl(imageIconUrl, opts),
|
||||
'info-circle': formatAssetUrl(infoCircleIconUrl, opts),
|
||||
leading: formatAssetUrl(leadingIconUrl, opts),
|
||||
link: formatAssetUrl(linkIconUrl, opts),
|
||||
'lock-small': formatAssetUrl(lockSmallIconUrl, opts),
|
||||
lock: formatAssetUrl(lockIconUrl, opts),
|
||||
menu: formatAssetUrl(menuIconUrl, opts),
|
||||
minus: formatAssetUrl(minusIconUrl, opts),
|
||||
mixed: formatAssetUrl(mixedIconUrl, opts),
|
||||
pack: formatAssetUrl(packIconUrl, opts),
|
||||
page: formatAssetUrl(pageIconUrl, opts),
|
||||
plus: formatAssetUrl(plusIconUrl, opts),
|
||||
'question-mark-circle': formatAssetUrl(questionMarkCircleIconUrl, opts),
|
||||
'question-mark': formatAssetUrl(questionMarkIconUrl, opts),
|
||||
redo: formatAssetUrl(redoIconUrl, opts),
|
||||
'reset-zoom': formatAssetUrl(resetZoomIconUrl, opts),
|
||||
'rotate-ccw': formatAssetUrl(rotateCcwIconUrl, opts),
|
||||
'rotate-cw': formatAssetUrl(rotateCwIconUrl, opts),
|
||||
ruler: formatAssetUrl(rulerIconUrl, opts),
|
||||
search: formatAssetUrl(searchIconUrl, opts),
|
||||
'send-backward': formatAssetUrl(sendBackwardIconUrl, opts),
|
||||
'send-to-back': formatAssetUrl(sendToBackIconUrl, opts),
|
||||
'settings-horizontal': formatAssetUrl(settingsHorizontalIconUrl, opts),
|
||||
'settings-vertical-1': formatAssetUrl(settingsVertical1IconUrl, opts),
|
||||
'settings-vertical': formatAssetUrl(settingsVerticalIconUrl, opts),
|
||||
'share-1': formatAssetUrl(share1IconUrl, opts),
|
||||
'share-2': formatAssetUrl(share2IconUrl, opts),
|
||||
'size-extra-large': formatAssetUrl(sizeExtraLargeIconUrl, opts),
|
||||
'size-large': formatAssetUrl(sizeLargeIconUrl, opts),
|
||||
'size-medium': formatAssetUrl(sizeMediumIconUrl, opts),
|
||||
'size-small': formatAssetUrl(sizeSmallIconUrl, opts),
|
||||
'spline-cubic': formatAssetUrl(splineCubicIconUrl, opts),
|
||||
'spline-line': formatAssetUrl(splineLineIconUrl, opts),
|
||||
'stack-horizontal': formatAssetUrl(stackHorizontalIconUrl, opts),
|
||||
'stack-vertical': formatAssetUrl(stackVerticalIconUrl, opts),
|
||||
'stretch-horizontal': formatAssetUrl(stretchHorizontalIconUrl, opts),
|
||||
'stretch-vertical': formatAssetUrl(stretchVerticalIconUrl, opts),
|
||||
'text-align-center': formatAssetUrl(textAlignCenterIconUrl, opts),
|
||||
'text-align-justify': formatAssetUrl(textAlignJustifyIconUrl, opts),
|
||||
'text-align-left': formatAssetUrl(textAlignLeftIconUrl, opts),
|
||||
'text-align-right': formatAssetUrl(textAlignRightIconUrl, opts),
|
||||
'tool-arrow': formatAssetUrl(toolArrowIconUrl, opts),
|
||||
'tool-embed': formatAssetUrl(toolEmbedIconUrl, opts),
|
||||
'tool-eraser': formatAssetUrl(toolEraserIconUrl, opts),
|
||||
'tool-frame': formatAssetUrl(toolFrameIconUrl, opts),
|
||||
'tool-hand': formatAssetUrl(toolHandIconUrl, opts),
|
||||
'tool-highlighter': formatAssetUrl(toolHighlighterIconUrl, opts),
|
||||
'tool-line': formatAssetUrl(toolLineIconUrl, opts),
|
||||
'tool-media': formatAssetUrl(toolMediaIconUrl, opts),
|
||||
'tool-note': formatAssetUrl(toolNoteIconUrl, opts),
|
||||
'tool-pencil': formatAssetUrl(toolPencilIconUrl, opts),
|
||||
'tool-pointer': formatAssetUrl(toolPointerIconUrl, opts),
|
||||
'tool-text': formatAssetUrl(toolTextIconUrl, opts),
|
||||
trash: formatAssetUrl(trashIconUrl, opts),
|
||||
'triangle-down': formatAssetUrl(triangleDownIconUrl, opts),
|
||||
'triangle-up': formatAssetUrl(triangleUpIconUrl, opts),
|
||||
twitter: formatAssetUrl(twitterIconUrl, opts),
|
||||
undo: formatAssetUrl(undoIconUrl, opts),
|
||||
ungroup: formatAssetUrl(ungroupIconUrl, opts),
|
||||
'unlock-small': formatAssetUrl(unlockSmallIconUrl, opts),
|
||||
unlock: formatAssetUrl(unlockIconUrl, opts),
|
||||
visible: formatAssetUrl(visibleIconUrl, opts),
|
||||
'warning-triangle': formatAssetUrl(warningTriangleIconUrl, opts),
|
||||
'zoom-in': formatAssetUrl(zoomInIconUrl, opts),
|
||||
'zoom-out': formatAssetUrl(zoomOutIconUrl, opts),
|
||||
},
|
||||
translations: {
|
||||
ar: formatAssetUrl(arTranslationUrl, opts),
|
||||
ca: formatAssetUrl(caTranslationUrl, opts),
|
||||
da: formatAssetUrl(daTranslationUrl, opts),
|
||||
de: formatAssetUrl(deTranslationUrl, opts),
|
||||
en: formatAssetUrl(enTranslationUrl, opts),
|
||||
es: formatAssetUrl(esTranslationUrl, opts),
|
||||
fa: formatAssetUrl(faTranslationUrl, opts),
|
||||
fi: formatAssetUrl(fiTranslationUrl, opts),
|
||||
fr: formatAssetUrl(frTranslationUrl, opts),
|
||||
gl: formatAssetUrl(glTranslationUrl, opts),
|
||||
he: formatAssetUrl(heTranslationUrl, opts),
|
||||
'hi-in': formatAssetUrl(hiInTranslationUrl, opts),
|
||||
hu: formatAssetUrl(huTranslationUrl, opts),
|
||||
it: formatAssetUrl(itTranslationUrl, opts),
|
||||
ja: formatAssetUrl(jaTranslationUrl, opts),
|
||||
'ko-kr': formatAssetUrl(koKrTranslationUrl, opts),
|
||||
ku: formatAssetUrl(kuTranslationUrl, opts),
|
||||
languages: formatAssetUrl(languagesTranslationUrl, opts),
|
||||
main: formatAssetUrl(mainTranslationUrl, opts),
|
||||
my: formatAssetUrl(myTranslationUrl, opts),
|
||||
ne: formatAssetUrl(neTranslationUrl, opts),
|
||||
no: formatAssetUrl(noTranslationUrl, opts),
|
||||
pl: formatAssetUrl(plTranslationUrl, opts),
|
||||
'pt-br': formatAssetUrl(ptBrTranslationUrl, opts),
|
||||
'pt-pt': formatAssetUrl(ptPtTranslationUrl, opts),
|
||||
ro: formatAssetUrl(roTranslationUrl, opts),
|
||||
ru: formatAssetUrl(ruTranslationUrl, opts),
|
||||
sv: formatAssetUrl(svTranslationUrl, opts),
|
||||
te: formatAssetUrl(teTranslationUrl, opts),
|
||||
th: formatAssetUrl(thTranslationUrl, opts),
|
||||
tr: formatAssetUrl(trTranslationUrl, opts),
|
||||
uk: formatAssetUrl(ukTranslationUrl, opts),
|
||||
vi: formatAssetUrl(viTranslationUrl, opts),
|
||||
'zh-cn': formatAssetUrl(zhCnTranslationUrl, opts),
|
||||
'zh-tw': formatAssetUrl(zhTwTranslationUrl, opts),
|
||||
},
|
||||
embedIcons: {
|
||||
codepen: formatAssetUrl(codepenEmbedIconUrl, opts),
|
||||
codesandbox: formatAssetUrl(codesandboxEmbedIconUrl, opts),
|
||||
excalidraw: formatAssetUrl(excalidrawEmbedIconUrl, opts),
|
||||
felt: formatAssetUrl(feltEmbedIconUrl, opts),
|
||||
figma: formatAssetUrl(figmaEmbedIconUrl, opts),
|
||||
github_gist: formatAssetUrl(githubGistEmbedIconUrl, opts),
|
||||
google_calendar: formatAssetUrl(googleCalendarEmbedIconUrl, opts),
|
||||
google_maps: formatAssetUrl(googleMapsEmbedIconUrl, opts),
|
||||
google_slides: formatAssetUrl(googleSlidesEmbedIconUrl, opts),
|
||||
observable: formatAssetUrl(observableEmbedIconUrl, opts),
|
||||
replit: formatAssetUrl(replitEmbedIconUrl, opts),
|
||||
scratch: formatAssetUrl(scratchEmbedIconUrl, opts),
|
||||
spotify: formatAssetUrl(spotifyEmbedIconUrl, opts),
|
||||
tldraw: formatAssetUrl(tldrawEmbedIconUrl, opts),
|
||||
vimeo: formatAssetUrl(vimeoEmbedIconUrl, opts),
|
||||
youtube: formatAssetUrl(youtubeEmbedIconUrl, opts),
|
||||
},
|
||||
} as const
|
||||
}
|
||||
export { getBundlerAssetUrls } from './imports'
|
||||
|
|
599
packages/assets/src/urls.ts
Normal file
|
@ -0,0 +1,599 @@
|
|||
// This file is automatically generated by scripts/refresh-assets.ts.
|
||||
// Do not edit manually.
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/triple-slash-reference
|
||||
/// <reference path="../modules.d.ts" />
|
||||
import { AssetUrlOptions, formatAssetUrl } from './utils'
|
||||
|
||||
/** @public */
|
||||
export function getBundlerAssetUrls(opts?: AssetUrlOptions) {
|
||||
return {
|
||||
fonts: {
|
||||
monospace: formatAssetUrl(
|
||||
new URL('../fonts/IBMPlexMono-Medium.woff2', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
sansSerif: formatAssetUrl(
|
||||
new URL('../fonts/IBMPlexSans-Medium.woff2', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
serif: formatAssetUrl(
|
||||
new URL('../fonts/IBMPlexSerif-Medium.woff2', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
draw: formatAssetUrl(
|
||||
new URL('../fonts/Shantell_Sans-Normal-SemiBold.woff2', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
},
|
||||
icons: {
|
||||
'align-bottom-center': formatAssetUrl(
|
||||
new URL('../icons/icon/align-bottom-center.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'align-bottom-left': formatAssetUrl(
|
||||
new URL('../icons/icon/align-bottom-left.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'align-bottom-right': formatAssetUrl(
|
||||
new URL('../icons/icon/align-bottom-right.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'align-bottom': formatAssetUrl(
|
||||
new URL('../icons/icon/align-bottom.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'align-center-center': formatAssetUrl(
|
||||
new URL('../icons/icon/align-center-center.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'align-center-horizontal': formatAssetUrl(
|
||||
new URL('../icons/icon/align-center-horizontal.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'align-center-left': formatAssetUrl(
|
||||
new URL('../icons/icon/align-center-left.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'align-center-right': formatAssetUrl(
|
||||
new URL('../icons/icon/align-center-right.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'align-center-vertical': formatAssetUrl(
|
||||
new URL('../icons/icon/align-center-vertical.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'align-left': formatAssetUrl(
|
||||
new URL('../icons/icon/align-left.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'align-right': formatAssetUrl(
|
||||
new URL('../icons/icon/align-right.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'align-top-center': formatAssetUrl(
|
||||
new URL('../icons/icon/align-top-center.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'align-top-left': formatAssetUrl(
|
||||
new URL('../icons/icon/align-top-left.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'align-top-right': formatAssetUrl(
|
||||
new URL('../icons/icon/align-top-right.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'align-top': formatAssetUrl(
|
||||
new URL('../icons/icon/align-top.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'arrow-left': formatAssetUrl(
|
||||
new URL('../icons/icon/arrow-left.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'arrowhead-arrow': formatAssetUrl(
|
||||
new URL('../icons/icon/arrowhead-arrow.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'arrowhead-bar': formatAssetUrl(
|
||||
new URL('../icons/icon/arrowhead-bar.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'arrowhead-diamond': formatAssetUrl(
|
||||
new URL('../icons/icon/arrowhead-diamond.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'arrowhead-dot': formatAssetUrl(
|
||||
new URL('../icons/icon/arrowhead-dot.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'arrowhead-none': formatAssetUrl(
|
||||
new URL('../icons/icon/arrowhead-none.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'arrowhead-square': formatAssetUrl(
|
||||
new URL('../icons/icon/arrowhead-square.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'arrowhead-triangle-inverted': formatAssetUrl(
|
||||
new URL('../icons/icon/arrowhead-triangle-inverted.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'arrowhead-triangle': formatAssetUrl(
|
||||
new URL('../icons/icon/arrowhead-triangle.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'aspect-ratio': formatAssetUrl(
|
||||
new URL('../icons/icon/aspect-ratio.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
avatar: formatAssetUrl(new URL('../icons/icon/avatar.svg', import.meta.url).href, opts),
|
||||
blob: formatAssetUrl(new URL('../icons/icon/blob.svg', import.meta.url).href, opts),
|
||||
'bring-forward': formatAssetUrl(
|
||||
new URL('../icons/icon/bring-forward.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'bring-to-front': formatAssetUrl(
|
||||
new URL('../icons/icon/bring-to-front.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
check: formatAssetUrl(new URL('../icons/icon/check.svg', import.meta.url).href, opts),
|
||||
'checkbox-checked': formatAssetUrl(
|
||||
new URL('../icons/icon/checkbox-checked.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'checkbox-empty': formatAssetUrl(
|
||||
new URL('../icons/icon/checkbox-empty.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'chevron-down': formatAssetUrl(
|
||||
new URL('../icons/icon/chevron-down.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'chevron-left': formatAssetUrl(
|
||||
new URL('../icons/icon/chevron-left.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'chevron-right': formatAssetUrl(
|
||||
new URL('../icons/icon/chevron-right.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'chevron-up': formatAssetUrl(
|
||||
new URL('../icons/icon/chevron-up.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'chevrons-ne': formatAssetUrl(
|
||||
new URL('../icons/icon/chevrons-ne.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'chevrons-sw': formatAssetUrl(
|
||||
new URL('../icons/icon/chevrons-sw.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'clipboard-copy': formatAssetUrl(
|
||||
new URL('../icons/icon/clipboard-copy.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
code: formatAssetUrl(new URL('../icons/icon/code.svg', import.meta.url).href, opts),
|
||||
collab: formatAssetUrl(new URL('../icons/icon/collab.svg', import.meta.url).href, opts),
|
||||
color: formatAssetUrl(new URL('../icons/icon/color.svg', import.meta.url).href, opts),
|
||||
comment: formatAssetUrl(new URL('../icons/icon/comment.svg', import.meta.url).href, opts),
|
||||
'cross-2': formatAssetUrl(new URL('../icons/icon/cross-2.svg', import.meta.url).href, opts),
|
||||
cross: formatAssetUrl(new URL('../icons/icon/cross.svg', import.meta.url).href, opts),
|
||||
'dash-dashed': formatAssetUrl(
|
||||
new URL('../icons/icon/dash-dashed.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'dash-dotted': formatAssetUrl(
|
||||
new URL('../icons/icon/dash-dotted.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'dash-draw': formatAssetUrl(
|
||||
new URL('../icons/icon/dash-draw.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'dash-solid': formatAssetUrl(
|
||||
new URL('../icons/icon/dash-solid.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
discord: formatAssetUrl(new URL('../icons/icon/discord.svg', import.meta.url).href, opts),
|
||||
'distribute-horizontal': formatAssetUrl(
|
||||
new URL('../icons/icon/distribute-horizontal.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'distribute-vertical': formatAssetUrl(
|
||||
new URL('../icons/icon/distribute-vertical.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
dot: formatAssetUrl(new URL('../icons/icon/dot.svg', import.meta.url).href, opts),
|
||||
'dots-horizontal': formatAssetUrl(
|
||||
new URL('../icons/icon/dots-horizontal.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'dots-vertical': formatAssetUrl(
|
||||
new URL('../icons/icon/dots-vertical.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'drag-handle-dots': formatAssetUrl(
|
||||
new URL('../icons/icon/drag-handle-dots.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
duplicate: formatAssetUrl(new URL('../icons/icon/duplicate.svg', import.meta.url).href, opts),
|
||||
edit: formatAssetUrl(new URL('../icons/icon/edit.svg', import.meta.url).href, opts),
|
||||
'external-link': formatAssetUrl(
|
||||
new URL('../icons/icon/external-link.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
file: formatAssetUrl(new URL('../icons/icon/file.svg', import.meta.url).href, opts),
|
||||
'fill-none': formatAssetUrl(
|
||||
new URL('../icons/icon/fill-none.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'fill-pattern': formatAssetUrl(
|
||||
new URL('../icons/icon/fill-pattern.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'fill-semi': formatAssetUrl(
|
||||
new URL('../icons/icon/fill-semi.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'fill-solid': formatAssetUrl(
|
||||
new URL('../icons/icon/fill-solid.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
follow: formatAssetUrl(new URL('../icons/icon/follow.svg', import.meta.url).href, opts),
|
||||
following: formatAssetUrl(new URL('../icons/icon/following.svg', import.meta.url).href, opts),
|
||||
'font-draw': formatAssetUrl(
|
||||
new URL('../icons/icon/font-draw.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'font-mono': formatAssetUrl(
|
||||
new URL('../icons/icon/font-mono.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'font-sans': formatAssetUrl(
|
||||
new URL('../icons/icon/font-sans.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'font-serif': formatAssetUrl(
|
||||
new URL('../icons/icon/font-serif.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'geo-arrow-down': formatAssetUrl(
|
||||
new URL('../icons/icon/geo-arrow-down.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'geo-arrow-left': formatAssetUrl(
|
||||
new URL('../icons/icon/geo-arrow-left.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'geo-arrow-right': formatAssetUrl(
|
||||
new URL('../icons/icon/geo-arrow-right.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'geo-arrow-up': formatAssetUrl(
|
||||
new URL('../icons/icon/geo-arrow-up.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'geo-diamond': formatAssetUrl(
|
||||
new URL('../icons/icon/geo-diamond.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'geo-ellipse': formatAssetUrl(
|
||||
new URL('../icons/icon/geo-ellipse.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'geo-hexagon': formatAssetUrl(
|
||||
new URL('../icons/icon/geo-hexagon.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'geo-octagon': formatAssetUrl(
|
||||
new URL('../icons/icon/geo-octagon.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'geo-oval': formatAssetUrl(new URL('../icons/icon/geo-oval.svg', import.meta.url).href, opts),
|
||||
'geo-pentagon': formatAssetUrl(
|
||||
new URL('../icons/icon/geo-pentagon.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'geo-rectangle': formatAssetUrl(
|
||||
new URL('../icons/icon/geo-rectangle.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'geo-rhombus-2': formatAssetUrl(
|
||||
new URL('../icons/icon/geo-rhombus-2.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'geo-rhombus': formatAssetUrl(
|
||||
new URL('../icons/icon/geo-rhombus.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'geo-star': formatAssetUrl(new URL('../icons/icon/geo-star.svg', import.meta.url).href, opts),
|
||||
'geo-trapezoid': formatAssetUrl(
|
||||
new URL('../icons/icon/geo-trapezoid.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'geo-triangle': formatAssetUrl(
|
||||
new URL('../icons/icon/geo-triangle.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'geo-x-box': formatAssetUrl(
|
||||
new URL('../icons/icon/geo-x-box.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
github: formatAssetUrl(new URL('../icons/icon/github.svg', import.meta.url).href, opts),
|
||||
group: formatAssetUrl(new URL('../icons/icon/group.svg', import.meta.url).href, opts),
|
||||
hidden: formatAssetUrl(new URL('../icons/icon/hidden.svg', import.meta.url).href, opts),
|
||||
image: formatAssetUrl(new URL('../icons/icon/image.svg', import.meta.url).href, opts),
|
||||
'info-circle': formatAssetUrl(
|
||||
new URL('../icons/icon/info-circle.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
leading: formatAssetUrl(new URL('../icons/icon/leading.svg', import.meta.url).href, opts),
|
||||
link: formatAssetUrl(new URL('../icons/icon/link.svg', import.meta.url).href, opts),
|
||||
'lock-small': formatAssetUrl(
|
||||
new URL('../icons/icon/lock-small.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
lock: formatAssetUrl(new URL('../icons/icon/lock.svg', import.meta.url).href, opts),
|
||||
menu: formatAssetUrl(new URL('../icons/icon/menu.svg', import.meta.url).href, opts),
|
||||
minus: formatAssetUrl(new URL('../icons/icon/minus.svg', import.meta.url).href, opts),
|
||||
mixed: formatAssetUrl(new URL('../icons/icon/mixed.svg', import.meta.url).href, opts),
|
||||
pack: formatAssetUrl(new URL('../icons/icon/pack.svg', import.meta.url).href, opts),
|
||||
page: formatAssetUrl(new URL('../icons/icon/page.svg', import.meta.url).href, opts),
|
||||
plus: formatAssetUrl(new URL('../icons/icon/plus.svg', import.meta.url).href, opts),
|
||||
'question-mark-circle': formatAssetUrl(
|
||||
new URL('../icons/icon/question-mark-circle.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'question-mark': formatAssetUrl(
|
||||
new URL('../icons/icon/question-mark.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
redo: formatAssetUrl(new URL('../icons/icon/redo.svg', import.meta.url).href, opts),
|
||||
'reset-zoom': formatAssetUrl(
|
||||
new URL('../icons/icon/reset-zoom.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'rotate-ccw': formatAssetUrl(
|
||||
new URL('../icons/icon/rotate-ccw.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'rotate-cw': formatAssetUrl(
|
||||
new URL('../icons/icon/rotate-cw.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
ruler: formatAssetUrl(new URL('../icons/icon/ruler.svg', import.meta.url).href, opts),
|
||||
search: formatAssetUrl(new URL('../icons/icon/search.svg', import.meta.url).href, opts),
|
||||
'send-backward': formatAssetUrl(
|
||||
new URL('../icons/icon/send-backward.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'send-to-back': formatAssetUrl(
|
||||
new URL('../icons/icon/send-to-back.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'settings-horizontal': formatAssetUrl(
|
||||
new URL('../icons/icon/settings-horizontal.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'settings-vertical-1': formatAssetUrl(
|
||||
new URL('../icons/icon/settings-vertical-1.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'settings-vertical': formatAssetUrl(
|
||||
new URL('../icons/icon/settings-vertical.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'share-1': formatAssetUrl(new URL('../icons/icon/share-1.svg', import.meta.url).href, opts),
|
||||
'share-2': formatAssetUrl(new URL('../icons/icon/share-2.svg', import.meta.url).href, opts),
|
||||
'size-extra-large': formatAssetUrl(
|
||||
new URL('../icons/icon/size-extra-large.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'size-large': formatAssetUrl(
|
||||
new URL('../icons/icon/size-large.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'size-medium': formatAssetUrl(
|
||||
new URL('../icons/icon/size-medium.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'size-small': formatAssetUrl(
|
||||
new URL('../icons/icon/size-small.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'spline-cubic': formatAssetUrl(
|
||||
new URL('../icons/icon/spline-cubic.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'spline-line': formatAssetUrl(
|
||||
new URL('../icons/icon/spline-line.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'stack-horizontal': formatAssetUrl(
|
||||
new URL('../icons/icon/stack-horizontal.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'stack-vertical': formatAssetUrl(
|
||||
new URL('../icons/icon/stack-vertical.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'stretch-horizontal': formatAssetUrl(
|
||||
new URL('../icons/icon/stretch-horizontal.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'stretch-vertical': formatAssetUrl(
|
||||
new URL('../icons/icon/stretch-vertical.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'text-align-center': formatAssetUrl(
|
||||
new URL('../icons/icon/text-align-center.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'text-align-justify': formatAssetUrl(
|
||||
new URL('../icons/icon/text-align-justify.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'text-align-left': formatAssetUrl(
|
||||
new URL('../icons/icon/text-align-left.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'text-align-right': formatAssetUrl(
|
||||
new URL('../icons/icon/text-align-right.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'tool-arrow': formatAssetUrl(
|
||||
new URL('../icons/icon/tool-arrow.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'tool-embed': formatAssetUrl(
|
||||
new URL('../icons/icon/tool-embed.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'tool-eraser': formatAssetUrl(
|
||||
new URL('../icons/icon/tool-eraser.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'tool-frame': formatAssetUrl(
|
||||
new URL('../icons/icon/tool-frame.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'tool-hand': formatAssetUrl(
|
||||
new URL('../icons/icon/tool-hand.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'tool-highlighter': formatAssetUrl(
|
||||
new URL('../icons/icon/tool-highlighter.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'tool-line': formatAssetUrl(
|
||||
new URL('../icons/icon/tool-line.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'tool-media': formatAssetUrl(
|
||||
new URL('../icons/icon/tool-media.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'tool-note': formatAssetUrl(
|
||||
new URL('../icons/icon/tool-note.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'tool-pencil': formatAssetUrl(
|
||||
new URL('../icons/icon/tool-pencil.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'tool-pointer': formatAssetUrl(
|
||||
new URL('../icons/icon/tool-pointer.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'tool-text': formatAssetUrl(
|
||||
new URL('../icons/icon/tool-text.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
trash: formatAssetUrl(new URL('../icons/icon/trash.svg', import.meta.url).href, opts),
|
||||
'triangle-down': formatAssetUrl(
|
||||
new URL('../icons/icon/triangle-down.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'triangle-up': formatAssetUrl(
|
||||
new URL('../icons/icon/triangle-up.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
twitter: formatAssetUrl(new URL('../icons/icon/twitter.svg', import.meta.url).href, opts),
|
||||
undo: formatAssetUrl(new URL('../icons/icon/undo.svg', import.meta.url).href, opts),
|
||||
ungroup: formatAssetUrl(new URL('../icons/icon/ungroup.svg', import.meta.url).href, opts),
|
||||
'unlock-small': formatAssetUrl(
|
||||
new URL('../icons/icon/unlock-small.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
unlock: formatAssetUrl(new URL('../icons/icon/unlock.svg', import.meta.url).href, opts),
|
||||
visible: formatAssetUrl(new URL('../icons/icon/visible.svg', import.meta.url).href, opts),
|
||||
'warning-triangle': formatAssetUrl(
|
||||
new URL('../icons/icon/warning-triangle.svg', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
'zoom-in': formatAssetUrl(new URL('../icons/icon/zoom-in.svg', import.meta.url).href, opts),
|
||||
'zoom-out': formatAssetUrl(new URL('../icons/icon/zoom-out.svg', import.meta.url).href, opts),
|
||||
},
|
||||
translations: {
|
||||
ar: formatAssetUrl(new URL('../translations/ar.json', import.meta.url).href, opts),
|
||||
ca: formatAssetUrl(new URL('../translations/ca.json', import.meta.url).href, opts),
|
||||
da: formatAssetUrl(new URL('../translations/da.json', import.meta.url).href, opts),
|
||||
de: formatAssetUrl(new URL('../translations/de.json', import.meta.url).href, opts),
|
||||
en: formatAssetUrl(new URL('../translations/en.json', import.meta.url).href, opts),
|
||||
es: formatAssetUrl(new URL('../translations/es.json', import.meta.url).href, opts),
|
||||
fa: formatAssetUrl(new URL('../translations/fa.json', import.meta.url).href, opts),
|
||||
fi: formatAssetUrl(new URL('../translations/fi.json', import.meta.url).href, opts),
|
||||
fr: formatAssetUrl(new URL('../translations/fr.json', import.meta.url).href, opts),
|
||||
gl: formatAssetUrl(new URL('../translations/gl.json', import.meta.url).href, opts),
|
||||
he: formatAssetUrl(new URL('../translations/he.json', import.meta.url).href, opts),
|
||||
'hi-in': formatAssetUrl(new URL('../translations/hi-in.json', import.meta.url).href, opts),
|
||||
hu: formatAssetUrl(new URL('../translations/hu.json', import.meta.url).href, opts),
|
||||
it: formatAssetUrl(new URL('../translations/it.json', import.meta.url).href, opts),
|
||||
ja: formatAssetUrl(new URL('../translations/ja.json', import.meta.url).href, opts),
|
||||
'ko-kr': formatAssetUrl(new URL('../translations/ko-kr.json', import.meta.url).href, opts),
|
||||
ku: formatAssetUrl(new URL('../translations/ku.json', import.meta.url).href, opts),
|
||||
languages: formatAssetUrl(
|
||||
new URL('../translations/languages.json', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
main: formatAssetUrl(new URL('../translations/main.json', import.meta.url).href, opts),
|
||||
my: formatAssetUrl(new URL('../translations/my.json', import.meta.url).href, opts),
|
||||
ne: formatAssetUrl(new URL('../translations/ne.json', import.meta.url).href, opts),
|
||||
no: formatAssetUrl(new URL('../translations/no.json', import.meta.url).href, opts),
|
||||
pl: formatAssetUrl(new URL('../translations/pl.json', import.meta.url).href, opts),
|
||||
'pt-br': formatAssetUrl(new URL('../translations/pt-br.json', import.meta.url).href, opts),
|
||||
'pt-pt': formatAssetUrl(new URL('../translations/pt-pt.json', import.meta.url).href, opts),
|
||||
ro: formatAssetUrl(new URL('../translations/ro.json', import.meta.url).href, opts),
|
||||
ru: formatAssetUrl(new URL('../translations/ru.json', import.meta.url).href, opts),
|
||||
sv: formatAssetUrl(new URL('../translations/sv.json', import.meta.url).href, opts),
|
||||
te: formatAssetUrl(new URL('../translations/te.json', import.meta.url).href, opts),
|
||||
th: formatAssetUrl(new URL('../translations/th.json', import.meta.url).href, opts),
|
||||
tr: formatAssetUrl(new URL('../translations/tr.json', import.meta.url).href, opts),
|
||||
uk: formatAssetUrl(new URL('../translations/uk.json', import.meta.url).href, opts),
|
||||
vi: formatAssetUrl(new URL('../translations/vi.json', import.meta.url).href, opts),
|
||||
'zh-cn': formatAssetUrl(new URL('../translations/zh-cn.json', import.meta.url).href, opts),
|
||||
'zh-tw': formatAssetUrl(new URL('../translations/zh-tw.json', import.meta.url).href, opts),
|
||||
},
|
||||
embedIcons: {
|
||||
codepen: formatAssetUrl(new URL('../embed-icons/codepen.png', import.meta.url).href, opts),
|
||||
codesandbox: formatAssetUrl(
|
||||
new URL('../embed-icons/codesandbox.png', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
excalidraw: formatAssetUrl(
|
||||
new URL('../embed-icons/excalidraw.png', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
felt: formatAssetUrl(new URL('../embed-icons/felt.png', import.meta.url).href, opts),
|
||||
figma: formatAssetUrl(new URL('../embed-icons/figma.png', import.meta.url).href, opts),
|
||||
github_gist: formatAssetUrl(
|
||||
new URL('../embed-icons/github_gist.png', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
google_calendar: formatAssetUrl(
|
||||
new URL('../embed-icons/google_calendar.png', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
google_maps: formatAssetUrl(
|
||||
new URL('../embed-icons/google_maps.png', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
google_slides: formatAssetUrl(
|
||||
new URL('../embed-icons/google_slides.png', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
observable: formatAssetUrl(
|
||||
new URL('../embed-icons/observable.png', import.meta.url).href,
|
||||
opts
|
||||
),
|
||||
replit: formatAssetUrl(new URL('../embed-icons/replit.png', import.meta.url).href, opts),
|
||||
scratch: formatAssetUrl(new URL('../embed-icons/scratch.png', import.meta.url).href, opts),
|
||||
spotify: formatAssetUrl(new URL('../embed-icons/spotify.png', import.meta.url).href, opts),
|
||||
tldraw: formatAssetUrl(new URL('../embed-icons/tldraw.png', import.meta.url).href, opts),
|
||||
vimeo: formatAssetUrl(new URL('../embed-icons/vimeo.png', import.meta.url).href, opts),
|
||||
youtube: formatAssetUrl(new URL('../embed-icons/youtube.png', import.meta.url).href, opts),
|
||||
},
|
||||
} as const
|
||||
}
|
|
@ -2,15 +2,22 @@
|
|||
export type AssetUrl = string | { src: string }
|
||||
|
||||
/** @public */
|
||||
export type AssetUrlOptions = {
|
||||
export type AssetUrlOptions =
|
||||
| {
|
||||
baseUrl?: string
|
||||
}
|
||||
| ((assetUrl: string) => string)
|
||||
|
||||
/** @public */
|
||||
export function formatAssetUrl(assetUrl: AssetUrl, { baseUrl = '' }: AssetUrlOptions = {}): string {
|
||||
export function formatAssetUrl(assetUrl: AssetUrl, format: AssetUrlOptions = {}): string {
|
||||
const assetUrlString = typeof assetUrl === 'string' ? assetUrl : assetUrl.src
|
||||
|
||||
if (typeof format === 'function') return format(assetUrlString)
|
||||
|
||||
const { baseUrl = '' } = format
|
||||
|
||||
if (assetUrlString.startsWith('data:')) return assetUrlString
|
||||
if (assetUrlString.match(/^https?:\/\//)) return assetUrlString
|
||||
|
||||
return `${baseUrl.replace(/\/$/, '')}/${assetUrlString.replace(/^\.?\//, '')}`
|
||||
}
|
||||
|
|
|
@ -619,7 +619,7 @@ export const DEFAULT_BOOKMARK_HEIGHT = 320;
|
|||
export const DEFAULT_BOOKMARK_WIDTH = 300;
|
||||
|
||||
// @public (undocumented)
|
||||
export const defaultEditorAssetUrls: EditorAssetUrls;
|
||||
export let defaultEditorAssetUrls: EditorAssetUrls;
|
||||
|
||||
// @public (undocumented)
|
||||
export function defaultEmptyAs(str: string, dflt: string): string;
|
||||
|
@ -1443,6 +1443,9 @@ export const runtime: {
|
|||
hardReset: () => void;
|
||||
};
|
||||
|
||||
// @internal (undocumented)
|
||||
export function setDefaultEditorAssetUrls(assetUrls: EditorAssetUrls): void;
|
||||
|
||||
// @public (undocumented)
|
||||
export function setPointerCapture(element: Element, event: PointerEvent | React_3.PointerEvent<Element>): void;
|
||||
|
||||
|
|
|
@ -107,7 +107,11 @@ export {
|
|||
export { type RequiredKeys, type TLEasingType } from './lib/app/types/misc-types'
|
||||
export { type TLReorderOperation } from './lib/app/types/reorder-types'
|
||||
export { type TLResizeHandle, type TLSelectionHandle } from './lib/app/types/selection-types'
|
||||
export { defaultEditorAssetUrls, type EditorAssetUrls } from './lib/assetUrls'
|
||||
export {
|
||||
defaultEditorAssetUrls,
|
||||
setDefaultEditorAssetUrls,
|
||||
type EditorAssetUrls,
|
||||
} from './lib/assetUrls'
|
||||
export { Canvas } from './lib/components/Canvas'
|
||||
export { DefaultErrorFallback } from './lib/components/DefaultErrorFallback'
|
||||
export {
|
||||
|
|
|
@ -9,7 +9,7 @@ export type EditorAssetUrls = {
|
|||
}
|
||||
|
||||
/** @public */
|
||||
export const defaultEditorAssetUrls: EditorAssetUrls = {
|
||||
export let defaultEditorAssetUrls: EditorAssetUrls = {
|
||||
fonts: {
|
||||
draw: '/fonts/Shantell_Sans-Normal-SemiBold.woff2',
|
||||
serif: '/fonts/IBMPlexSerif-Medium.woff2',
|
||||
|
@ -17,3 +17,8 @@ export const defaultEditorAssetUrls: EditorAssetUrls = {
|
|||
monospace: '/fonts/IBMPlexMono-Medium.woff2',
|
||||
},
|
||||
}
|
||||
|
||||
/** @internal */
|
||||
export function setDefaultEditorAssetUrls(assetUrls: EditorAssetUrls) {
|
||||
defaultEditorAssetUrls = assetUrls
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { rangeIntersection } from '@tldraw/primitives'
|
||||
import * as React from 'react'
|
||||
import { GapsSnapLine, PointsSnapLine, SnapLine } from '../app/managers/SnapManager'
|
||||
import { type GapsSnapLine, type PointsSnapLine, type SnapLine } from '../app/managers/SnapManager'
|
||||
|
||||
function PointsSnapLine({ points, zoom }: { zoom: number } & PointsSnapLine) {
|
||||
const l = 2.5 / zoom
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
"test-coverage": "lazy inherit",
|
||||
"dev": "chokidar '../{editor,ui}/*.css' -c 'node ./scripts/copy-css-files.mjs' --initial",
|
||||
"prebuild": "node ./scripts/copy-css-files.mjs",
|
||||
"build": "node ./scripts/copy-css-files.mjs",
|
||||
"build-package": "yarn run -T tsx ../../scripts/build-package.ts",
|
||||
"build-api": "yarn run -T tsx ../../scripts/build-api.ts",
|
||||
"prepack": "yarn run -T tsx ../../scripts/prepack.ts",
|
||||
|
|
|
@ -552,6 +552,9 @@ function Root({ id, open, children, modal, }: {
|
|||
modal?: boolean;
|
||||
}): JSX.Element;
|
||||
|
||||
// @internal (undocumented)
|
||||
export function setDefaultUiAssetUrls(urls: UiAssetUrls): void;
|
||||
|
||||
// @public (undocumented)
|
||||
export function Slider(props: SliderProps): JSX.Element;
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ export {
|
|||
TldrawUiContextProvider,
|
||||
type TldrawUiContextProviderProps,
|
||||
} from './lib/TldrawUiContextProvider'
|
||||
export { setDefaultUiAssetUrls } from './lib/assetUrls'
|
||||
export { ContextMenu, type ContextMenuProps } from './lib/components/ContextMenu'
|
||||
export { DebugPanel } from './lib/components/DebugPanel'
|
||||
export { HTMLCanvas } from './lib/components/HTMLCanvas'
|
||||
|
|
|
@ -8,7 +8,7 @@ export type UiAssetUrls = EditorAssetUrls & {
|
|||
embedIcons: Record<(typeof EMBED_DEFINITIONS)[number]['type'], string>
|
||||
}
|
||||
|
||||
export const defaultUiAssetUrls: UiAssetUrls = {
|
||||
export let defaultUiAssetUrls: UiAssetUrls = {
|
||||
...defaultEditorAssetUrls,
|
||||
icons: Object.fromEntries(
|
||||
TLUiIconTypes.map((name) => [name, `/icons/icon/${name}.svg`])
|
||||
|
@ -20,3 +20,8 @@ export const defaultUiAssetUrls: UiAssetUrls = {
|
|||
EMBED_DEFINITIONS.map((def) => [def.type, `/embed-icons/${def.type}.png`])
|
||||
) as Record<(typeof EMBED_DEFINITIONS)[number]['type'], string>,
|
||||
}
|
||||
|
||||
/** @internal */
|
||||
export function setDefaultUiAssetUrls(urls: UiAssetUrls) {
|
||||
defaultUiAssetUrls = urls
|
||||
}
|
||||
|
|
148
public-yarn.lock
|
@ -537,6 +537,21 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/plugin-proposal-decorators@npm:^7.21.0":
|
||||
version: 7.21.0
|
||||
resolution: "@babel/plugin-proposal-decorators@npm:7.21.0"
|
||||
dependencies:
|
||||
"@babel/helper-create-class-features-plugin": ^7.21.0
|
||||
"@babel/helper-plugin-utils": ^7.20.2
|
||||
"@babel/helper-replace-supers": ^7.20.7
|
||||
"@babel/helper-split-export-declaration": ^7.18.6
|
||||
"@babel/plugin-syntax-decorators": ^7.21.0
|
||||
peerDependencies:
|
||||
"@babel/core": ^7.0.0-0
|
||||
checksum: 2889a060010af7ac2e24f7a193262e50a94e254dd86d273e25a2bec2a2f97dd95b136bb933f63448c1cdde4f38ac7877837685657aa8161699eb226d9f1eb453
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/plugin-proposal-dynamic-import@npm:^7.18.6":
|
||||
version: 7.18.6
|
||||
resolution: "@babel/plugin-proposal-dynamic-import@npm:7.18.6"
|
||||
|
@ -731,6 +746,17 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/plugin-syntax-decorators@npm:^7.21.0":
|
||||
version: 7.21.0
|
||||
resolution: "@babel/plugin-syntax-decorators@npm:7.21.0"
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils": ^7.20.2
|
||||
peerDependencies:
|
||||
"@babel/core": ^7.0.0-0
|
||||
checksum: 31108e73c3e569f2795ddb4f5f1f32c13c6be97a107d41e318c8f58ca3fde0fa958af3d1a302ab64f36f73ce4d6dda7889732243561c087a7cc3b22192d42a65
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@babel/plugin-syntax-dynamic-import@npm:^7.8.3":
|
||||
version: 7.8.3
|
||||
resolution: "@babel/plugin-syntax-dynamic-import@npm:7.8.3"
|
||||
|
@ -4912,15 +4938,6 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/ip@npm:^1.1.0":
|
||||
version: 1.1.0
|
||||
resolution: "@types/ip@npm:1.1.0"
|
||||
dependencies:
|
||||
"@types/node": "*"
|
||||
checksum: 05e1ef8b525e2f2d73f5cde7ef1e0e7aa1b027946e066b4063f9c8c2fde59a13762ec703e6df32e2db31db1dc3a54f46a7516bd6d970200d175ec7e9700bb83e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/is-ci@npm:^3.0.0":
|
||||
version: 3.0.0
|
||||
resolution: "@types/is-ci@npm:3.0.0"
|
||||
|
@ -6641,16 +6658,7 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"browserslist-to-esbuild@npm:^1.2.0":
|
||||
version: 1.2.0
|
||||
resolution: "browserslist-to-esbuild@npm:1.2.0"
|
||||
dependencies:
|
||||
browserslist: ^4.17.3
|
||||
checksum: a6c1adc2ad8da0db23aa4f0b3c71e13561cbf61599e9acedc7890793d79aca250edb0f599095042e81587c88e87569bf3a1a68633026e81e4ac7548eb1c71b49
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"browserslist@npm:^4.17.3, browserslist@npm:^4.21.3, browserslist@npm:^4.21.5":
|
||||
"browserslist@npm:^4.21.3, browserslist@npm:^4.21.5":
|
||||
version: 4.21.5
|
||||
resolution: "browserslist@npm:4.21.5"
|
||||
dependencies:
|
||||
|
@ -7331,26 +7339,6 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"concurrently@npm:^7.4.0":
|
||||
version: 7.6.0
|
||||
resolution: "concurrently@npm:7.6.0"
|
||||
dependencies:
|
||||
chalk: ^4.1.0
|
||||
date-fns: ^2.29.1
|
||||
lodash: ^4.17.21
|
||||
rxjs: ^7.0.0
|
||||
shell-quote: ^1.7.3
|
||||
spawn-command: ^0.0.2-1
|
||||
supports-color: ^8.1.0
|
||||
tree-kill: ^1.2.2
|
||||
yargs: ^17.3.1
|
||||
bin:
|
||||
conc: dist/bin/concurrently.js
|
||||
concurrently: dist/bin/concurrently.js
|
||||
checksum: f705c9a7960f1b16559ca64958043faeeef6385c0bf30a03d1375e15ab2d96dba4f8166f1bbbb1c85e8da35ca0ce3c353875d71dff2aa132b2357bb533b3332e
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"config@workspace:config":
|
||||
version: 0.0.0-use.local
|
||||
resolution: "config@workspace:config"
|
||||
|
@ -7649,7 +7637,7 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"date-fns@npm:^2.16.1, date-fns@npm:^2.29.1":
|
||||
"date-fns@npm:^2.16.1":
|
||||
version: 2.29.3
|
||||
resolution: "date-fns@npm:2.29.3"
|
||||
checksum: e01cf5b62af04e05dfff921bb9c9933310ed0e1ae9a81eb8653452e64dc841acf7f6e01e1a5ae5644d0337e9a7f936175fd2cb6819dc122fdd9c5e86c56be484
|
||||
|
@ -9472,19 +9460,16 @@ __metadata:
|
|||
version: 0.0.0-use.local
|
||||
resolution: "examples.tldraw.com@workspace:apps/examples"
|
||||
dependencies:
|
||||
"@babel/plugin-proposal-decorators": ^7.21.0
|
||||
"@tldraw/assets": "workspace:*"
|
||||
"@tldraw/tldraw": "workspace:*"
|
||||
"@types/ip": ^1.1.0
|
||||
browserslist-to-esbuild: ^1.2.0
|
||||
concurrently: ^7.4.0
|
||||
esbuild: ^0.16.7
|
||||
ip: ^1.1.8
|
||||
lazyrepo: 0.0.0-alpha.26
|
||||
node-forge: ^1.3.1
|
||||
react: ^18.2.0
|
||||
react-dom: ^18.2.0
|
||||
react-router-dom: ^6.9.0
|
||||
signia: 0.1.4
|
||||
signia-react: 0.1.4
|
||||
vite: ^4.3.4
|
||||
languageName: unknown
|
||||
linkType: soft
|
||||
|
||||
|
@ -11067,7 +11052,7 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"ip@npm:^1.1.5, ip@npm:^1.1.8":
|
||||
"ip@npm:^1.1.5":
|
||||
version: 1.1.8
|
||||
resolution: "ip@npm:1.1.8"
|
||||
checksum: a2ade53eb339fb0cbe9e69a44caab10d6e3784662285eb5d2677117ee4facc33a64679051c35e0dfdb1a3983a51ce2f5d2cb36446d52e10d01881789b76e28fb
|
||||
|
@ -14306,13 +14291,6 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"node-forge@npm:^1.3.1":
|
||||
version: 1.3.1
|
||||
resolution: "node-forge@npm:1.3.1"
|
||||
checksum: 08fb072d3d670599c89a1704b3e9c649ff1b998256737f0e06fbd1a5bf41cae4457ccaee32d95052d80bbafd9ffe01284e078c8071f0267dc9744e51c5ed42a9
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"node-gyp-build@npm:^4.2.2":
|
||||
version: 4.6.0
|
||||
resolution: "node-gyp-build@npm:4.6.0"
|
||||
|
@ -15247,7 +15225,7 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"postcss@npm:^8.4.19, postcss@npm:^8.4.21":
|
||||
"postcss@npm:^8.4.19, postcss@npm:^8.4.21, postcss@npm:^8.4.23":
|
||||
version: 8.4.23
|
||||
resolution: "postcss@npm:8.4.23"
|
||||
dependencies:
|
||||
|
@ -16441,6 +16419,20 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"rollup@npm:^3.21.0":
|
||||
version: 3.21.4
|
||||
resolution: "rollup@npm:3.21.4"
|
||||
dependencies:
|
||||
fsevents: ~2.3.2
|
||||
dependenciesMeta:
|
||||
fsevents:
|
||||
optional: true
|
||||
bin:
|
||||
rollup: dist/bin/rollup
|
||||
checksum: ad7dec30ce31b47e32c3daf464b14c25e52f4e07b6ad9fa610b0abcff480b1a1fb01aabdefa6bac30ff1ee23ab16762621cd24810798148cdff74efda1a98874
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"run-async@npm:^2.4.0":
|
||||
version: 2.4.1
|
||||
resolution: "run-async@npm:2.4.1"
|
||||
|
@ -16466,7 +16458,7 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"rxjs@npm:^7.0.0, rxjs@npm:^7.5.5, rxjs@npm:^7.8.0":
|
||||
"rxjs@npm:^7.5.5, rxjs@npm:^7.8.0":
|
||||
version: 7.8.0
|
||||
resolution: "rxjs@npm:7.8.0"
|
||||
dependencies:
|
||||
|
@ -16688,13 +16680,6 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"shell-quote@npm:^1.7.3":
|
||||
version: 1.8.1
|
||||
resolution: "shell-quote@npm:1.8.1"
|
||||
checksum: 5f01201f4ef504d4c6a9d0d283fa17075f6770bfbe4c5850b074974c68062f37929ca61700d95ad2ac8822e14e8c4b990ca0e6e9272e64befd74ce5e19f0736b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"side-channel@npm:^1.0.4":
|
||||
version: 1.0.4
|
||||
resolution: "side-channel@npm:1.0.4"
|
||||
|
@ -18576,6 +18561,43 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"vite@npm:^4.3.4":
|
||||
version: 4.3.4
|
||||
resolution: "vite@npm:4.3.4"
|
||||
dependencies:
|
||||
esbuild: ^0.17.5
|
||||
fsevents: ~2.3.2
|
||||
postcss: ^8.4.23
|
||||
rollup: ^3.21.0
|
||||
peerDependencies:
|
||||
"@types/node": ">= 14"
|
||||
less: "*"
|
||||
sass: "*"
|
||||
stylus: "*"
|
||||
sugarss: "*"
|
||||
terser: ^5.4.0
|
||||
dependenciesMeta:
|
||||
fsevents:
|
||||
optional: true
|
||||
peerDependenciesMeta:
|
||||
"@types/node":
|
||||
optional: true
|
||||
less:
|
||||
optional: true
|
||||
sass:
|
||||
optional: true
|
||||
stylus:
|
||||
optional: true
|
||||
sugarss:
|
||||
optional: true
|
||||
terser:
|
||||
optional: true
|
||||
bin:
|
||||
vite: bin/vite.js
|
||||
checksum: 90ce3923ef3e9a491851fb34effece43858d0ba915db17ea6ad0eb649bd77d81c69a71aafc55a6fbd11e4134b1a79eb7e2e3553f055d390d32ca0ff7c645acf6
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"vm2@npm:^3.9.11":
|
||||
version: 3.9.17
|
||||
resolution: "vm2@npm:3.9.17"
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import { readFile, writeFile as writeFileUnchecked } from 'fs/promises'
|
||||
import json5 from 'json5'
|
||||
import { basename, dirname, join, relative } from 'path'
|
||||
import prettier from 'prettier'
|
||||
import { fileURLToPath } from 'url'
|
||||
|
@ -10,11 +11,11 @@ export const REPO_ROOT = join(__dirname, isBublic ? '../../..' : '../..')
|
|||
export const BUBLIC_ROOT = join(__dirname, '../..')
|
||||
|
||||
export async function readJsonIfExists(file: string) {
|
||||
try {
|
||||
return JSON.parse(await readFile(file, 'utf8'))
|
||||
} catch {
|
||||
const fileContents = await readFileIfExists(file)
|
||||
if (fileContents === null) {
|
||||
return null
|
||||
}
|
||||
return json5.parse(fileContents)
|
||||
}
|
||||
|
||||
export async function readFileIfExists(file: string) {
|
||||
|
|
|
@ -11,10 +11,7 @@ import {
|
|||
} from './lib/file'
|
||||
|
||||
// We'll need to copy the assets into these folders
|
||||
const PUBLIC_FOLDER_PATHS = [
|
||||
join(BUBLIC_ROOT, 'packages', 'assets'),
|
||||
join(BUBLIC_ROOT, 'apps', 'examples', 'www'),
|
||||
]
|
||||
const PUBLIC_FOLDER_PATHS = [join(BUBLIC_ROOT, 'packages', 'assets')]
|
||||
|
||||
const FONT_MAPPING: Record<string, string> = {
|
||||
'IBMPlexMono-Medium': 'monospace',
|
||||
|
@ -26,16 +23,15 @@ const FONT_MAPPING: Record<string, string> = {
|
|||
const ASSETS_FOLDER_PATH = join(BUBLIC_ROOT, 'assets')
|
||||
|
||||
const collectedAssetUrls: {
|
||||
imports: { name: string; from: string }[]
|
||||
assets: {
|
||||
fonts: Record<string, string>
|
||||
icons: Record<string, string>
|
||||
translations: Record<string, string>
|
||||
embedIcons: Record<string, string>
|
||||
}
|
||||
} = {
|
||||
imports: [],
|
||||
assets: { fonts: {}, icons: {}, translations: {}, embedIcons: {} },
|
||||
fonts: {},
|
||||
icons: {},
|
||||
translations: {},
|
||||
embedIcons: {},
|
||||
}
|
||||
|
||||
// 1. ICONS
|
||||
|
@ -100,12 +96,7 @@ async function copyIcons() {
|
|||
// add to the asset declaration file
|
||||
for (const icon of icons) {
|
||||
const name = icon.replace('.svg', '')
|
||||
const variableName = camelCase(`${name}IconUrl`)
|
||||
collectedAssetUrls.imports.push({
|
||||
name: variableName,
|
||||
from: `icons/icon/${icon}`,
|
||||
})
|
||||
collectedAssetUrls.assets.icons[name] = variableName
|
||||
collectedAssetUrls.icons[name] = `icons/icon/${icon}`
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -138,12 +129,7 @@ async function copyEmbedIcons() {
|
|||
// add to the asset declaration file
|
||||
for (const item of itemsToCopy) {
|
||||
const name = item.replace(extension, '')
|
||||
const variableName = camelCase(`${name}EmbedIconUrl`)
|
||||
collectedAssetUrls.imports.push({
|
||||
name: variableName,
|
||||
from: `${folderName}/${item}`,
|
||||
})
|
||||
collectedAssetUrls.assets.embedIcons[name] = variableName
|
||||
collectedAssetUrls.embedIcons[name] = `${folderName}/${item}`
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -181,12 +167,7 @@ async function copyFonts() {
|
|||
console.log('Font mapping not found for', itemWithoutExtension)
|
||||
process.exit(1)
|
||||
}
|
||||
const variableName = camelCase(`${name}FontUrl`)
|
||||
collectedAssetUrls.imports.push({
|
||||
name: variableName,
|
||||
from: `${folderName}/${item}`,
|
||||
})
|
||||
collectedAssetUrls.assets.fonts[name] = variableName
|
||||
collectedAssetUrls.fonts[name] = `${folderName}/${item}`
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -255,38 +236,31 @@ async function copyTranslations() {
|
|||
// add to the asset declaration file
|
||||
for (const item of itemsToCopy) {
|
||||
const name = item.replace(extension, '')
|
||||
const variableName = camelCase(`${name}TranslationUrl`)
|
||||
collectedAssetUrls.imports.push({
|
||||
name: variableName,
|
||||
from: `${folderName}/${item}`,
|
||||
})
|
||||
collectedAssetUrls.assets.translations[name] = variableName
|
||||
collectedAssetUrls.translations[name] = `${folderName}/${item}`
|
||||
}
|
||||
}
|
||||
|
||||
// 4. ASSET DECLARATION FILE
|
||||
async function writeAssetDeclarationFile() {
|
||||
const assetDeclarationFilePath = join(BUBLIC_ROOT, 'packages', 'assets', 'src', 'index.ts')
|
||||
// 4. ASSET DECLARATION FILES
|
||||
async function writeUrlBasedAssetDeclarationFile() {
|
||||
const assetDeclarationFilePath = join(BUBLIC_ROOT, 'packages', 'assets', 'src', 'urls.ts')
|
||||
let assetDeclarationFile = `
|
||||
// eslint-disable-next-line @typescript-eslint/triple-slash-reference
|
||||
/// <reference path="../modules.d.ts" />
|
||||
import {formatAssetUrl, AssetUrlOptions} from './utils';
|
||||
`
|
||||
|
||||
for (const { name, from } of collectedAssetUrls.imports) {
|
||||
assetDeclarationFile += `import ${name} from '../${from}';\n`
|
||||
}
|
||||
|
||||
assetDeclarationFile += `
|
||||
/** @public */
|
||||
export function getBundlerAssetUrls(opts?: AssetUrlOptions) {
|
||||
return {
|
||||
${Object.entries(collectedAssetUrls.assets)
|
||||
${Object.entries(collectedAssetUrls)
|
||||
.flatMap(([type, assets]) => [
|
||||
`${type}: {`,
|
||||
...Object.entries(assets).map(
|
||||
([name, variableName]) =>
|
||||
`${JSON.stringify(name)}: formatAssetUrl(${variableName}, opts),`
|
||||
([name, href]) =>
|
||||
`${JSON.stringify(name)}: formatAssetUrl(new URL(${JSON.stringify(
|
||||
'../' + href
|
||||
)}, import.meta.url).href, opts),`
|
||||
),
|
||||
'},',
|
||||
])
|
||||
|
@ -297,9 +271,39 @@ async function writeAssetDeclarationFile() {
|
|||
|
||||
await writeTypescriptFile(assetDeclarationFilePath, assetDeclarationFile)
|
||||
}
|
||||
async function writeImportBasedAssetDeclarationFile(): Promise<void> {
|
||||
let imports = `
|
||||
// eslint-disable-next-line @typescript-eslint/triple-slash-reference
|
||||
/// <reference path="../modules.d.ts" />
|
||||
import {formatAssetUrl, AssetUrlOptions} from './utils';
|
||||
`
|
||||
|
||||
function camelCase(name: string) {
|
||||
return name.replace(/[_-]([a-z0-9])/gi, (g) => g[1].toUpperCase())
|
||||
let declarations = `
|
||||
/** @public */
|
||||
export function getBundlerAssetUrls(opts?: AssetUrlOptions) {
|
||||
return {
|
||||
`
|
||||
|
||||
for (const [type, assets] of Object.entries(collectedAssetUrls)) {
|
||||
declarations += `${type}: {\n`
|
||||
for (const [name, href] of Object.entries(assets)) {
|
||||
const variableName = `${type}_${name}`
|
||||
.replace(/[^a-zA-Z0-9_]/g, '_')
|
||||
.replace(/_+/g, '_')
|
||||
.replace(/_(.)/g, (_, letter) => letter.toUpperCase())
|
||||
imports += `import ${variableName} from ${JSON.stringify('../' + href)};\n`
|
||||
declarations += `${JSON.stringify(name)}: formatAssetUrl(${variableName}, opts),\n`
|
||||
}
|
||||
declarations += '},\n'
|
||||
}
|
||||
|
||||
declarations += `
|
||||
} as const
|
||||
}
|
||||
`
|
||||
|
||||
const assetDeclarationFilePath = join(BUBLIC_ROOT, 'packages', 'assets', 'src', 'imports.ts')
|
||||
await writeTypescriptFile(assetDeclarationFilePath, imports + declarations)
|
||||
}
|
||||
|
||||
// --- RUN
|
||||
|
@ -313,7 +317,8 @@ async function main() {
|
|||
console.log('Copying translations...')
|
||||
await copyTranslations()
|
||||
console.log('Writing asset declaration file...')
|
||||
await writeAssetDeclarationFile()
|
||||
await writeUrlBasedAssetDeclarationFile()
|
||||
await writeImportBasedAssetDeclarationFile()
|
||||
console.log('Done!')
|
||||
}
|
||||
|
||||
|
|