diff --git a/.eslintignore b/.eslintignore index 4704ea2e8e..583029aa79 100644 --- a/.eslintignore +++ b/.eslintignore @@ -10,7 +10,6 @@ internal_exports.ts # output files animate/*.js easing/*.js -environment/*.js internal/*.js interpolate/*.js motion/*.js diff --git a/.gitignore b/.gitignore index 1ed9ce8ec3..90ccacd05e 100644 --- a/.gitignore +++ b/.gitignore @@ -9,7 +9,6 @@ node_modules /animate /easing -/environment /internal /interpolate /motion diff --git a/environment/index.d.ts b/environment/index.d.ts new file mode 100644 index 0000000000..01c73ad465 --- /dev/null +++ b/environment/index.d.ts @@ -0,0 +1 @@ +export * from '../types/runtime/environment/index'; \ No newline at end of file diff --git a/environment/index.js b/environment/index.js new file mode 100644 index 0000000000..bdc6a0ee30 --- /dev/null +++ b/environment/index.js @@ -0,0 +1,42 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +function noop() {} +const is_browser = typeof window !== 'undefined'; +const is_iframe = is_browser && window.self !== window.top; +const is_cors = + is_iframe && + /*#__PURE__*/ (() => { + try { + if (window.parent) void window.parent.document; + return false; + } catch (error) { + return true; + } + })(); +const has_Symbol = typeof Symbol === 'function'; +/* eslint-disable no-var */ + +const globals = is_browser ? window : typeof globalThis !== 'undefined' ? globalThis : global; +const resolved_promise = Promise.resolve(); + +exports.now = is_browser ? window.performance.now.bind(window.performance) : Date.now.bind(Date); +exports.raf = is_browser ? requestAnimationFrame : noop; +exports.framerate = 1000 / 60; + +/* tests only */ +const set_now = (v) => void (exports.now = v); +const set_raf = (fn) => void (exports.raf = fn); +const set_framerate = (v) => void (exports.framerate = v); + +exports.globals = globals; +exports.has_Symbol = has_Symbol; +exports.is_browser = is_browser; +exports.is_cors = is_cors; +exports.is_iframe = is_iframe; +exports.noop = noop; +exports.resolved_promise = resolved_promise; +exports.set_framerate = set_framerate; +exports.set_now = set_now; +exports.set_raf = set_raf; diff --git a/environment/index.mjs b/environment/index.mjs new file mode 100644 index 0000000000..b6b4d9db0f --- /dev/null +++ b/environment/index.mjs @@ -0,0 +1,29 @@ +function noop() {} +const is_browser = typeof window !== 'undefined'; +const is_iframe = is_browser && window.self !== window.top; +const is_cors = + is_iframe && + /*#__PURE__*/ (() => { + try { + if (window.parent) void window.parent.document; + return false; + } catch (error) { + return true; + } + })(); +const has_Symbol = typeof Symbol === 'function'; +/* eslint-disable no-var */ + +const globals = is_browser ? window : typeof globalThis !== 'undefined' ? globalThis : global; +const resolved_promise = Promise.resolve(); + +let now = is_browser ? window.performance.now.bind(window.performance) : Date.now.bind(Date); +let raf = is_browser ? requestAnimationFrame : noop; +let framerate = 1000 / 60; + +/* tests only */ +const set_now = (v) => void (now = v); +const set_raf = (fn) => void (raf = fn); +const set_framerate = (v) => void (framerate = v); + +export { framerate, globals, has_Symbol, is_browser, is_cors, is_iframe, noop, now, raf, resolved_promise, set_framerate, set_now, set_raf }; diff --git a/environment/package.json b/environment/package.json new file mode 100644 index 0000000000..e106ca54ab --- /dev/null +++ b/environment/package.json @@ -0,0 +1,5 @@ +{ + "main": "./index", + "module": "./index.mjs", + "types": "./index.d.ts" + } \ No newline at end of file diff --git a/package.json b/package.json index ebaee85997..b46221ff5b 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,6 @@ "animate", "dev", "easing", - "environment", "internal", "interpolate", "motion", diff --git a/site/content/examples/08-motion/01-spring/App.svelte b/site/content/examples/08-motion/01-spring/App.svelte index 9c6396598e..075c3edc3d 100644 --- a/site/content/examples/08-motion/01-spring/App.svelte +++ b/site/content/examples/08-motion/01-spring/App.svelte @@ -1,184 +1,156 @@ solve_spring(e.clientY, $velocity)} - bind:innerWidth={canvas_width} - bind:innerHeight={canvas_height} /> + on:mousemove={(e) => solve_spring(e.clientY, $velocity)} + bind:innerWidth={canvas_width} + bind:innerHeight={canvas_height} />
- - - - - + + + + + - - - + + +
- + diff --git a/src/runtime/internal/Component.ts b/src/runtime/internal/Component.ts index 23bba43066..7f6682a0c2 100644 --- a/src/runtime/internal/Component.ts +++ b/src/runtime/internal/Component.ts @@ -2,7 +2,7 @@ import { add_render_callback, flush, schedule_update } from './scheduler'; import { current_component, set_current_component } from './lifecycle'; import { children, detach } from './dom'; import { transition_in } from './transitions'; -import { noop } from 'svelte/environment'; +import { noop } from './environment'; type binary = 0 | 1; export interface Fragment { key: string | null; diff --git a/src/runtime/internal/animations.ts b/src/runtime/internal/animations.ts index d88686df3d..e29d221623 100644 --- a/src/runtime/internal/animations.ts +++ b/src/runtime/internal/animations.ts @@ -1,5 +1,5 @@ import { run_transition } from './transitions'; -import { noop } from 'svelte/environment'; +import { noop } from './environment'; export interface AnimationConfig { delay?: number; diff --git a/src/runtime/internal/dev.ts b/src/runtime/internal/dev.ts index 210779045b..c24fc3717c 100644 --- a/src/runtime/internal/dev.ts +++ b/src/runtime/internal/dev.ts @@ -1,5 +1,5 @@ import { custom_event, append, insert, detach, listen, attr } from './dom'; -import { has_Symbol } from 'svelte/environment'; +import { has_Symbol } from './environment'; import { SvelteComponent } from './Component'; export function add_location_dev(element, file, line, column, char) { diff --git a/src/runtime/internal/dom.ts b/src/runtime/internal/dom.ts index 48aebb0594..6615cc32fe 100644 --- a/src/runtime/internal/dom.ts +++ b/src/runtime/internal/dom.ts @@ -1,4 +1,4 @@ -import { is_cors } from 'svelte/environment'; +import { is_cors } from './environment'; export function append(target: Node, node: Node) { target.appendChild(node); diff --git a/src/runtime/environment/index.ts b/src/runtime/internal/environment.ts similarity index 100% rename from src/runtime/environment/index.ts rename to src/runtime/internal/environment.ts diff --git a/src/runtime/internal/index.ts b/src/runtime/internal/index.ts index 1708bf3f80..18041ab5a5 100644 --- a/src/runtime/internal/index.ts +++ b/src/runtime/internal/index.ts @@ -3,6 +3,7 @@ export * from './await_block'; export * from './Component'; export * from './dev'; export * from './dom'; +export * from './environment'; export * from './keyed_each'; export * from './lifecycle'; export * from './loop'; @@ -13,6 +14,3 @@ export * from './stores'; // export * from './style_manager' export * from './transitions'; export * from './utils'; - -// todo: [create_module.ts line 24] allow compiler to import non internal -export * from '../environment/index'; diff --git a/src/runtime/internal/loop.ts b/src/runtime/internal/loop.ts index 4fe50c3d76..db8a5eee94 100644 --- a/src/runtime/internal/loop.ts +++ b/src/runtime/internal/loop.ts @@ -1,4 +1,4 @@ -import { now, raf, framerate, noop } from 'svelte/environment'; +import { now, raf, framerate, noop } from './environment'; type TaskCallback = (t: number) => boolean; type TaskCanceller = () => void; diff --git a/src/runtime/internal/scheduler.ts b/src/runtime/internal/scheduler.ts index 18fe822b4c..615f20ef2d 100644 --- a/src/runtime/internal/scheduler.ts +++ b/src/runtime/internal/scheduler.ts @@ -1,5 +1,5 @@ import { set_current_component } from './lifecycle'; -import { resolved_promise, now } from 'svelte/environment'; +import { resolved_promise, now } from './environment'; import { T$$ } from './Component'; let update_scheduled = false; diff --git a/src/runtime/internal/stores.ts b/src/runtime/internal/stores.ts index 3dd2226efb..99602a6bad 100644 --- a/src/runtime/internal/stores.ts +++ b/src/runtime/internal/stores.ts @@ -1,6 +1,6 @@ import { safe_not_equal, subscribe } from './utils'; import { onEachFrame, loop } from './loop'; -import { noop } from 'svelte/environment'; +import { noop } from './environment'; type Setter = (value: T) => void; type StopCallback = () => void; export type StartStopNotifier = (set: Setter) => StopCallback | void; diff --git a/src/runtime/internal/style_manager.ts b/src/runtime/internal/style_manager.ts index 541b852585..f20205f44e 100644 --- a/src/runtime/internal/style_manager.ts +++ b/src/runtime/internal/style_manager.ts @@ -1,4 +1,4 @@ -import { framerate } from 'svelte/environment'; +import { framerate } from './environment'; let documents_uid = 0; let running_animations = 0; diff --git a/src/runtime/internal/transitions.ts b/src/runtime/internal/transitions.ts index 6970d34439..0d12313a15 100644 --- a/src/runtime/internal/transitions.ts +++ b/src/runtime/internal/transitions.ts @@ -1,7 +1,7 @@ import { TransitionConfig } from '../transition'; import { Fragment } from './Component'; import { custom_event } from './dom'; -import { now, noop } from 'svelte/environment'; +import { now, noop } from './environment'; import { setFrameTimeout, setTweenTimeout } from './loop'; import { add_measure_callback } from './scheduler'; import { animate_css } from './style_manager'; diff --git a/src/runtime/internal/utils.ts b/src/runtime/internal/utils.ts index 44a8c8962f..ecd7ed6779 100644 --- a/src/runtime/internal/utils.ts +++ b/src/runtime/internal/utils.ts @@ -1,4 +1,4 @@ -import { noop } from 'svelte/environment'; +import { noop } from './environment'; export const is_promise = (value: any): value is PromiseLike => value && typeof value === 'object' && typeof value.then === 'function'; diff --git a/test/custom-elements/index.ts b/test/custom-elements/index.ts index 4707159fb8..15dc7c8aab 100644 --- a/test/custom-elements/index.ts +++ b/test/custom-elements/index.ts @@ -59,7 +59,6 @@ describe('custom-elements', function () { const solo = /\.solo$/.test(dir); const skip = /\.skip$/.test(dir); const internal = path.resolve('internal/index.mjs'); - const environment = path.resolve('environment/index.mjs'); const index = path.resolve('index.mjs'); const warnings = []; @@ -79,9 +78,6 @@ describe('custom-elements', function () { if (importee === 'svelte') { return index; } - if (importee === 'svelte/environment' || importee === '../environment') { - return environment; - } }, transform(code, id) { diff --git a/test/runtime/index.ts b/test/runtime/index.ts index 45e38c344a..2a61abccdd 100644 --- a/test/runtime/index.ts +++ b/test/runtime/index.ts @@ -2,8 +2,7 @@ import { relative, resolve } from 'path'; import { readFileSync, existsSync, unlinkSync, writeFileSync, readdirSync } from 'fs'; import { rollup } from 'rollup'; import virtual from '@rollup/plugin-virtual'; -import { clear_loops, flush, SvelteComponent } from '../../internal'; -import { set_now, set_raf, set_framerate } from '../../environment'; +import { clear_loops, flush, SvelteComponent,set_now, set_raf, set_framerate } from '../../internal'; import { showOutput, loadConfig, loadSvelte, cleanRequireCache, env, setupHtmlEqual, mkdirp } from '../helpers'; import { glob } from '../tiny-glob'; import { assert } from '../test'; @@ -255,9 +254,6 @@ describe('runtime', () => { if (importee.startsWith('svelte/')) { return importee.replace('svelte', process.cwd()) + '/index.mjs'; } - if (importee === '../environment') { - return process.cwd() + '/environment/index.mjs'; - } }, }, ],