bacb307bad
This PR does the following: - Add `selfHosted.js`, which is a great option for users that wish to self host the assets. Works well for both self hosting from the public folder or via a CDN. - Updates the docs for assets. We now have a dedicated page for assets where all the options are more clearly explained. I also removed the assets explanation from the main docs as the unpkg option should work out of the box and setting up the assets is no longer necessary. - Cleaned up the `refresh-assets` script. We now use common `types.d.ts` file to define our types. All the other options then reuse them. - Pulled out the `formatAssetUrl` into it's own file. It's now static an no longer generated. - `urls.d.ts`, `import.d.ts`, and newly added `selfhosted.d.ts` are now also no longer generated as we can import the types from `types.d.ts`. - You can now pass a subset of `assetUrls` to `<Tldraw />` and it will override the default option with the passed in overrides. This makes it easy to only customizes certain assets (only change the draw font as an example). ### Change Type - [x] `patch` — Bug Fix
20 lines
654 B
JavaScript
20 lines
654 B
JavaScript
// eslint-disable-next-line @typescript-eslint/triple-slash-reference
|
|
/// <reference path="./modules.d.ts" />
|
|
|
|
/**
|
|
* @param {AssetUrl} assetUrl
|
|
* @param {AssetUrlOptions} [format]
|
|
* @returns {string}
|
|
*/
|
|
export function formatAssetUrl(assetUrl, format = {}) {
|
|
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(/^\.?\//, '')}`
|
|
}
|