Right now it's easy for the user to distinguish between a sequenced prop and non-sequenced props.
However, among the non-sequenced ones, it's not possible to distinguish between those that have a static override, and those that don't. The goal of this commit is to make it easy to distinguish between the two.
This starts a new workspace at `packages/benchmarks` where future benchmarks
are going to sit. For now, it only contains a basic profile of a `sequence.play()`
setup.
It also removes all uses of `AbstractDerivation.map()/flatMap()` and uses prisms
instead.
* Implement an internal library for studio notifications
* Improve design a little
* Document code
* Change relative import to absolute one
* Fix tiny styling issue
* Add notifications playground
* Add notifications empty state and keep notifications buttons always visible
Also fix a bug related to not clearing the type and uniqueness checkers.
* Simplify notifications playground
* Treat window as optional in case it runs in server code
Addresses the lack of options we currently have for surfacing issues in
our application via debugging tools. Prioritizes performance and
usability (visually) over clarity in some places that could have been
object mapped.
A logger with three separate audiences:
* `internal`: Logs for developers maintaining Theatre.js
* `dev`: Logs for developers using Theatre.js
* `public`: Logs for everyone
This logger supports:
* multiple logging levels (error, warn, debug, trace),
* multiple audience levels (internal, dev, public),
* multiple categories (general, todo, troubleshooting)
* named and keyed loggers (e.g.
`rootLogger.named("Project", project.id)`)
* console styling with deterministic coloring
* console devtool maintains accurate sourcemap link to logging origin
(e.g. `coreExports.ts:71` as opposed to `logger.ts:45` or whatever)
* swappable logger
* customizable filtering
* Accepts lazy `args`: `args: () => object` via
`logger.lazy.<level>("message", () => <expensive computation>)` (e.g.
`logger.lazy.debugDev("Loaded project state", () => ({ save: bigProject.exportToSaveable() }))`)
* refactor: improve idents near DeterminePropEditor
* fix: Allow `MouseEvent` for `usePopover` `OpenFn`
* Anticipate to be used with `useDrag` (which is written using `MouseEvent`s)
* refactor: rename local variable depth to visualIndentation
* fix: Hide out of bounds LengthIndicator
* pointer: Fix type errors with `getPointerParts` using generics
* Fix param type for `getPointerMeta`
* Inline keyframe editor + popover nesting
* Complete inline editor,
* add reason for close popover, &
* enable popover nesting
* enable inline keyframe editing with splitting of DeterminePropEditor
* usePopover has PopoverAutoCloseLock helper
Co-authored-by: Elliot <key.draw@gmail.com>
Co-authored-by: Aria <aria.minaei@gmail.com>
* prop editor: Reorganize prop-editors & improve documentation
Co-authored-by: Cole Lawrence <cole@colelawrence.com>
Co-authored-by: Elliot <key.draw@gmail.com>
Co-authored-by: Elliot <key.draw@gmail.com>
Co-authored-by: Aria <aria.minaei@gmail.com>
* Use more Nominal types to help with internal code id usage consistency
* Broke apart StudioHistoricState type
Co-authored-by: Aria <aria.minaei@gmail.com>