gitextract__bqhh5jc/ ├── .github/ │ └── workflows/ │ ├── checks.yml │ ├── documentation.yml │ └── publish.yml ├── .gitignore ├── .husky/ │ └── pre-commit ├── .prettierignore ├── .vscode/ │ └── launch.json ├── .yarn/ │ ├── plugins/ │ │ └── @yarnpkg/ │ │ └── plugin-workspace-tools.cjs │ └── releases/ │ └── yarn-1.22.17.cjs ├── .yarnarc ├── .yarnrc.yml ├── LICENSE ├── README.md ├── archive/ │ ├── figma-paperclip/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── bin/ │ │ │ └── figma-paperclip │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── api.ts │ │ │ ├── cli.ts │ │ │ ├── constants.ts │ │ │ ├── index.ts │ │ │ ├── memo.ts │ │ │ ├── state.ts │ │ │ ├── translate-pc.ts │ │ │ ├── translate-utils.ts │ │ │ └── utils.ts │ │ └── tsconfig.json │ ├── gatsby-plugin-paperclip/ │ │ ├── .eslintrc.json │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── package.json │ │ ├── src/ │ │ │ ├── gatsby-node.ts │ │ │ ├── index.ts │ │ │ └── resolve.ts │ │ └── tsconfig.json │ ├── paperclip-docco/ │ │ ├── .eslintrc.json │ │ ├── README.md │ │ ├── brainstorm/ │ │ │ └── ui/ │ │ │ ├── app.pc │ │ │ ├── colors.pc │ │ │ ├── test.html │ │ │ └── typography.pc │ │ ├── package.json │ │ ├── paperclip.config.json │ │ └── src/ │ │ └── front-end/ │ │ └── index.ts │ └── paperclip-playground/ │ ├── package.json │ ├── paperclip.config.json │ ├── src/ │ │ ├── frontend/ │ │ │ ├── actions/ │ │ │ │ ├── base.ts │ │ │ │ └── index.ts │ │ │ ├── api/ │ │ │ │ └── index.ts │ │ │ ├── components/ │ │ │ │ ├── Button/ │ │ │ │ │ ├── index.pc │ │ │ │ │ └── index.tsx │ │ │ │ ├── Main/ │ │ │ │ │ ├── CodeMode/ │ │ │ │ │ │ ├── Slim.tsx │ │ │ │ │ │ ├── Toolbar/ │ │ │ │ │ │ │ └── index.pc │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── prism.css │ │ │ │ │ ├── DesignMode/ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── EditableLabel/ │ │ │ │ │ │ └── index.pc │ │ │ │ │ ├── Menu/ │ │ │ │ │ │ └── index.pc │ │ │ │ │ ├── NoBrowserSupportModal/ │ │ │ │ │ │ └── index.pc │ │ │ │ │ ├── PasswordModal/ │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ProjectLoadingModal/ │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── Projects/ │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── ShareModal/ │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── Toolbar/ │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── auth/ │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── oauth.ts │ │ │ │ │ ├── index.pc │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── test.pc │ │ │ │ ├── Modal/ │ │ │ │ │ ├── index.pc │ │ │ │ │ └── index.tsx │ │ │ │ └── Theme/ │ │ │ │ ├── breakpoints.pc │ │ │ │ └── index.pc │ │ │ ├── entry.tsx │ │ │ ├── hocs/ │ │ │ │ └── withAppStore/ │ │ │ │ └── index.tsx │ │ │ ├── hooks/ │ │ │ │ ├── resources.ts │ │ │ │ ├── useAppStore/ │ │ │ │ │ └── index.ts │ │ │ │ └── useQuery.ts │ │ │ ├── reducers/ │ │ │ │ └── index.ts │ │ │ ├── sagas/ │ │ │ │ ├── api.ts │ │ │ │ ├── engine-worker.ts │ │ │ │ ├── engine.ts │ │ │ │ ├── index.ts │ │ │ │ ├── location.ts │ │ │ │ ├── resources.ts │ │ │ │ └── utils.ts │ │ │ ├── state/ │ │ │ │ └── index.ts │ │ │ └── utils/ │ │ │ └── string-editor.ts │ │ ├── index.html │ │ └── index.ts │ ├── todos.md │ ├── tsconfig.json │ └── webpack.config.js ├── examples/ │ ├── react-basic/ │ │ ├── README.md │ │ ├── package.json │ │ ├── paperclip.config.json │ │ ├── sandbox.config.json │ │ ├── src/ │ │ │ ├── CustomGroceryList.pc │ │ │ ├── GroceryList.pc │ │ │ ├── GroceryList.tsx │ │ │ ├── breakpoints.pc │ │ │ ├── entry.tsx │ │ │ └── index.html │ │ ├── tsconfig.json │ │ └── webpack.config.js │ ├── syntax-basic/ │ │ ├── README.md │ │ ├── package.json │ │ ├── paperclip.config.json │ │ ├── sandbox.config.json │ │ └── src/ │ │ └── hello.pc │ ├── tailwind/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── paperclip.config.json │ │ ├── sandbox.config.json │ │ ├── src/ │ │ │ ├── index.pc │ │ │ └── tailwind.scss │ │ └── tailwind.config.js │ ├── tailwind-and-animate/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── css-modules/ │ │ │ └── animate.css │ │ ├── package.json │ │ ├── paperclip.config.json │ │ ├── sandbox.config.json │ │ ├── src/ │ │ │ ├── hello-paperclip.pc │ │ │ └── tailwind.scss │ │ └── tailwind.config.js │ └── tailwind-and-bootstrap-example/ │ ├── .gitignore │ ├── css-modules/ │ │ └── bootstrap/ │ │ ├── bootstrap-grid.css │ │ ├── bootstrap-grid.rtl.css │ │ ├── bootstrap-reboot.css │ │ ├── bootstrap-reboot.rtl.css │ │ ├── bootstrap-utilities.css │ │ ├── bootstrap-utilities.rtl.css │ │ ├── bootstrap.css │ │ └── bootstrap.rtl.css │ ├── package.json │ ├── paperclip.config.json │ ├── src/ │ │ ├── hello-paperclip.pc │ │ └── tailwind.scss │ └── tailwind.config.js ├── lerna.json ├── package.json ├── packages/ │ ├── avocode-paperclip/ │ │ ├── .gitignore │ │ ├── LICENSE │ │ ├── package.json │ │ ├── src/ │ │ │ ├── api.ts │ │ │ └── index.ts │ │ └── tsconfig.json │ ├── figma-paperclip/ │ │ ├── LICENSE │ │ ├── bin/ │ │ │ └── figma-paperclip │ │ ├── examples/ │ │ │ └── wrapper-module/ │ │ │ ├── .gitignore │ │ │ ├── figma-paperclip.config.js │ │ │ ├── figma-paperclip.json.backup │ │ │ ├── package.json │ │ │ └── paperclip.config.json │ │ ├── package.json │ │ ├── src/ │ │ │ ├── api.ts │ │ │ ├── constants.ts │ │ │ ├── graph.ts │ │ │ ├── index.ts │ │ │ ├── init.ts │ │ │ ├── memo.ts │ │ │ ├── pull.ts │ │ │ ├── state.ts │ │ │ ├── translate/ │ │ │ │ ├── context.ts │ │ │ │ ├── index.ts │ │ │ │ ├── modules.ts │ │ │ │ ├── pages.ts │ │ │ │ └── utils.ts │ │ │ ├── translate2/ │ │ │ │ ├── context.ts │ │ │ │ ├── index.ts │ │ │ │ ├── pages.ts │ │ │ │ └── state.ts │ │ │ └── utils.ts │ │ ├── todos.md │ │ └── tsconfig.json │ ├── jest-paperclip/ │ │ ├── LICENSE │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ └── tsconfig.json │ ├── paperclip-autocomplete/ │ │ ├── .eslintrc.json │ │ ├── LICENSE │ │ ├── README.md │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ ├── string-scanner.ts │ │ │ ├── suggest-context.ts │ │ │ ├── test/ │ │ │ │ ├── suggest-context-test.ts │ │ │ │ └── tokenize-test.ts │ │ │ └── tokenizer.ts │ │ └── tsconfig.json │ ├── paperclip-builder/ │ │ ├── .gitignore │ │ ├── LICENSE │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── build.ts │ │ │ ├── errors.ts │ │ │ ├── index.ts │ │ │ ├── resolve-compilers.ts │ │ │ ├── test/ │ │ │ │ ├── basic-test.ts │ │ │ │ ├── build-test.ts │ │ │ │ ├── resolve-compilers-test.ts │ │ │ │ └── utils.ts │ │ │ └── utils.ts │ │ └── tsconfig.json │ ├── paperclip-cli/ │ │ ├── .eslintrc.json │ │ ├── .npmignore │ │ ├── LICENSE │ │ ├── README.md │ │ ├── bin/ │ │ │ └── paperclip │ │ ├── package.json │ │ ├── src/ │ │ │ ├── cli.ts │ │ │ ├── coverage.ts │ │ │ ├── dev.ts │ │ │ ├── init.ts │ │ │ ├── install-module.ts │ │ │ ├── pretty-message.ts │ │ │ ├── scaffolding/ │ │ │ │ ├── generators/ │ │ │ │ │ ├── base.ts │ │ │ │ │ ├── files/ │ │ │ │ │ │ ├── .babelrc │ │ │ │ │ │ ├── entry-tsx │ │ │ │ │ │ ├── hello-paperclip.pc │ │ │ │ │ │ ├── tsconfig.json │ │ │ │ │ │ └── webpack.config-js │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── javascript.ts │ │ │ │ │ ├── node.ts │ │ │ │ │ ├── percy.ts │ │ │ │ │ ├── react.ts │ │ │ │ │ ├── root.ts │ │ │ │ │ ├── typescript.ts │ │ │ │ │ ├── utils.ts │ │ │ │ │ └── webpack.ts │ │ │ │ └── index.ts │ │ │ └── test/ │ │ │ └── basic-test.ts │ │ └── tsconfig.json │ ├── paperclip-cli-minimal/ │ │ ├── .eslintrc.json │ │ ├── .npmignore │ │ ├── LICENSE │ │ ├── README.md │ │ ├── bin/ │ │ │ └── paperclip │ │ ├── package.json │ │ ├── src/ │ │ │ ├── build.ts │ │ │ ├── cli.ts │ │ │ └── tm.d.ts │ │ └── tsconfig.json │ ├── paperclip-cli-utils/ │ │ ├── .eslintrc.json │ │ ├── .npmignore │ │ ├── LICENSE │ │ ├── README.md │ │ ├── bin/ │ │ │ └── paperclip │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ └── pretty-message.ts │ │ └── tsconfig.json │ ├── paperclip-common/ │ │ ├── LICENSE │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── bindable/ │ │ │ │ └── index.ts │ │ │ ├── disposable.ts │ │ │ ├── em.ts │ │ │ ├── events.ts │ │ │ ├── immutable-store.ts │ │ │ ├── index.ts │ │ │ ├── kernel.ts │ │ │ ├── log.ts │ │ │ ├── promise.ts │ │ │ ├── remote-channel.ts │ │ │ ├── rpc/ │ │ │ │ ├── adapters.ts │ │ │ │ ├── chan.ts │ │ │ │ ├── index.ts │ │ │ │ └── spy.ts │ │ │ ├── services.ts │ │ │ ├── string-editor.ts │ │ │ └── test-utils/ │ │ │ ├── index.ts │ │ │ └── tmp-fixtures.ts │ │ └── tsconfig.json │ ├── paperclip-compiler-base-jsx/ │ │ ├── .eslintrc.json │ │ ├── package.json │ │ ├── src/ │ │ │ ├── code-compiler.ts │ │ │ ├── definition-compiler.ts │ │ │ ├── index.ts │ │ │ ├── test/ │ │ │ │ ├── index.ts │ │ │ │ ├── test-suite.ts │ │ │ │ └── utils.ts │ │ │ └── utils.ts │ │ └── tsconfig.json │ ├── paperclip-compiler-html/ │ │ ├── .eslintrc.json │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ ├── test/ │ │ │ │ └── basic-test.ts │ │ │ └── utils.ts │ │ └── tsconfig.json │ ├── paperclip-compiler-php/ │ │ └── examples/ │ │ └── test/ │ │ └── src/ │ │ └── test.pc.php │ ├── paperclip-compiler-react/ │ │ ├── .eslintrc.json │ │ ├── LICENSE │ │ ├── README.md │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── inernals.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ └── test/ │ │ │ ├── basic-test.tsx │ │ │ └── css-test.tsx │ │ └── tsconfig.json │ ├── paperclip-core/ │ │ ├── .eslintrc.json │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── LICENSE │ │ ├── README.md │ │ ├── babel.config.json │ │ ├── browser.d.ts │ │ ├── browser.js │ │ ├── examples/ │ │ │ ├── codepen/ │ │ │ │ ├── bird-game.pc │ │ │ │ ├── pure-css-accordion.pc │ │ │ │ └── pure-css-buttons.pc │ │ │ ├── paperclip.config.json │ │ │ └── test.css │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── native/ │ │ │ ├── Cargo.toml │ │ │ ├── artifacts.json │ │ │ ├── build.rsx │ │ │ ├── bundler/ │ │ │ │ ├── paperclip.d.ts │ │ │ │ ├── paperclip.js │ │ │ │ ├── paperclip_bg.js │ │ │ │ ├── paperclip_bg.wasm │ │ │ │ └── paperclip_bg.wasm.d.ts │ │ │ ├── rustfmt.toml │ │ │ └── src/ │ │ │ ├── annotation/ │ │ │ │ ├── ast.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── parser.rs │ │ │ │ ├── runtime.rs │ │ │ │ └── tokenizer.rs │ │ │ ├── base/ │ │ │ │ ├── ast.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── parser.rs │ │ │ │ ├── runtime.rs │ │ │ │ ├── string_scanner.rs │ │ │ │ ├── tokenizer.rs │ │ │ │ └── utils.rs │ │ │ ├── core/ │ │ │ │ ├── ast.rs │ │ │ │ ├── diagnostics.rs │ │ │ │ ├── eval.rs │ │ │ │ ├── eval_utils.rs │ │ │ │ ├── graph.rs │ │ │ │ ├── id_generator.rs │ │ │ │ ├── mod.rs │ │ │ │ └── vfs.rs │ │ │ ├── coverage/ │ │ │ │ ├── mod.rs │ │ │ │ └── reporter.rs │ │ │ ├── css/ │ │ │ │ ├── ast.rs │ │ │ │ ├── base.rs │ │ │ │ ├── declaration_value_ast.rs │ │ │ │ ├── declaration_value_parser.rs │ │ │ │ ├── media_ast.rs │ │ │ │ ├── media_parser.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── parser.rs │ │ │ │ ├── runtime/ │ │ │ │ │ ├── cache.rs │ │ │ │ │ ├── diff.rs │ │ │ │ │ ├── evaluator.rs │ │ │ │ │ ├── export.rs │ │ │ │ │ ├── media_match.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── mutation.rs │ │ │ │ │ ├── specificity.rs │ │ │ │ │ └── virt.rs │ │ │ │ └── tokenizer.rs │ │ │ ├── engine/ │ │ │ │ ├── diagnostics.rs │ │ │ │ ├── engine.rs │ │ │ │ ├── errors.rs │ │ │ │ ├── mod.rs │ │ │ │ └── test_utils.rs │ │ │ ├── lib.rs │ │ │ ├── pc/ │ │ │ │ ├── ast.rs │ │ │ │ ├── get_info.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── parser.rs │ │ │ │ ├── runtime/ │ │ │ │ │ ├── annotation_evaluator.rs │ │ │ │ │ ├── cache.rs │ │ │ │ │ ├── diff.rs │ │ │ │ │ ├── evaluator.rs │ │ │ │ │ ├── export.rs │ │ │ │ │ ├── inspect_node_styles.rs │ │ │ │ │ ├── inspect_selector_info.rs │ │ │ │ │ ├── inspector.rs │ │ │ │ │ ├── lint.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── mutation.rs │ │ │ │ │ ├── selector_match.rs │ │ │ │ │ └── virt.rs │ │ │ │ └── tokenizer.rs │ │ │ └── script/ │ │ │ ├── ast.rs │ │ │ ├── mod.rs │ │ │ ├── parser.rs │ │ │ ├── runtime/ │ │ │ │ ├── evaluator.rs │ │ │ │ ├── mod.rs │ │ │ │ └── virt.rs │ │ │ └── tokenizer.rs │ │ ├── package.json │ │ ├── pkg/ │ │ │ └── index.js │ │ ├── src/ │ │ │ ├── core/ │ │ │ │ ├── delegate.ts │ │ │ │ ├── index.ts │ │ │ │ ├── infer.ts │ │ │ │ └── utils.ts │ │ │ ├── node/ │ │ │ │ ├── async-delegate.ts │ │ │ │ ├── delegate-worker.ts │ │ │ │ ├── index.ts │ │ │ │ └── sync-delegate.ts │ │ │ └── test/ │ │ │ ├── file-system/ │ │ │ │ ├── pc-test.ts │ │ │ │ └── resolve-test.ts │ │ │ ├── utils.ts │ │ │ └── virtual/ │ │ │ ├── annotate-test.ts │ │ │ ├── css-compile-test.ts │ │ │ ├── css-test.ts │ │ │ ├── error-test.ts │ │ │ ├── infer-test.ts │ │ │ ├── inspect-test.ts │ │ │ ├── lint-test.ts │ │ │ ├── pc-test.ts │ │ │ └── raws-test.ts │ │ ├── test-fixtures/ │ │ │ ├── .vscode/ │ │ │ │ └── settings.json │ │ │ ├── modules/ │ │ │ │ ├── @nested/ │ │ │ │ │ └── in/ │ │ │ │ │ └── a/ │ │ │ │ │ └── folder/ │ │ │ │ │ ├── package.json │ │ │ │ │ ├── paperclip.config.json │ │ │ │ │ └── src/ │ │ │ │ │ ├── component.pc │ │ │ │ │ ├── imp-mod-a.pc │ │ │ │ │ ├── module.pc │ │ │ │ │ └── test.pc │ │ │ │ └── module-a/ │ │ │ │ ├── package.json │ │ │ │ ├── paperclip.config.json │ │ │ │ └── src/ │ │ │ │ ├── component.pc │ │ │ │ ├── module.pc │ │ │ │ └── test.pc │ │ │ ├── paperclip.config.json │ │ │ └── src/ │ │ │ ├── bad-css-url.pc │ │ │ ├── bad-import.pc │ │ │ ├── good-import.pc │ │ │ ├── hello-world.pc │ │ │ ├── mod-a-import.pc │ │ │ ├── mod-import.pc │ │ │ ├── module.pc │ │ │ └── nested-mod-import.pc │ │ ├── tsconfig.esm.json │ │ └── tsconfig.json │ ├── paperclip-coverage/ │ │ ├── package.json │ │ ├── paperclip.config.json │ │ ├── src/ │ │ │ ├── constants.ts │ │ │ ├── generate/ │ │ │ │ ├── html/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── ui/ │ │ │ │ │ ├── atoms.pc │ │ │ │ │ ├── file-report.pc │ │ │ │ │ ├── page.pc │ │ │ │ │ └── report.pc │ │ │ │ └── stdout/ │ │ │ │ └── index.ts │ │ │ ├── index.ts │ │ │ └── state.ts │ │ └── tsconfig.json │ ├── paperclip-diff/ │ │ ├── package.json │ │ ├── paperclip.config.json │ │ ├── src/ │ │ │ ├── cli.ts │ │ │ ├── core.ts │ │ │ ├── index.ts │ │ │ ├── report/ │ │ │ │ ├── html/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── page.pc │ │ │ │ │ └── report.pc │ │ │ │ ├── index.ts │ │ │ │ └── stdout/ │ │ │ │ └── index.ts │ │ │ ├── snapshots.ts │ │ │ ├── state.ts │ │ │ └── utils.ts │ │ └── tsconfig.json │ ├── paperclip-diff-utils/ │ │ ├── bin/ │ │ │ └── paperclip-diff │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ ├── pc-document.ts │ │ │ └── utils.ts │ │ └── tsconfig.json │ ├── paperclip-editor-engine/ │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── client/ │ │ │ │ ├── client.ts │ │ │ │ ├── documents/ │ │ │ │ │ ├── base.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── pc/ │ │ │ │ │ ├── index.ts │ │ │ │ │ └── source.ts │ │ │ │ └── internal-client.ts │ │ │ ├── core/ │ │ │ │ ├── channels/ │ │ │ │ │ ├── document.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── virtual-object.ts │ │ │ │ ├── crdt-document.ts │ │ │ │ ├── documents.ts │ │ │ │ ├── index.ts │ │ │ │ ├── string-editor.ts │ │ │ │ ├── utils.ts │ │ │ │ └── virtual-object-edit.ts │ │ │ ├── host/ │ │ │ │ ├── connection.ts │ │ │ │ ├── documents/ │ │ │ │ │ ├── base.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── manager.ts │ │ │ │ │ ├── pc-document-editor.ts │ │ │ │ │ ├── pc-source.ts │ │ │ │ │ └── pc.ts │ │ │ │ └── host.ts │ │ │ ├── index.ts │ │ │ └── test/ │ │ │ ├── basic-test.ts │ │ │ ├── preview-test.ts │ │ │ ├── utils.ts │ │ │ └── virtual-edit-test.ts │ │ └── tsconfig.json │ ├── paperclip-interim/ │ │ ├── LICENSE │ │ ├── README.md │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ ├── state/ │ │ │ │ ├── assets.ts │ │ │ │ ├── css.ts │ │ │ │ ├── html.ts │ │ │ │ ├── index.ts │ │ │ │ ├── module.ts │ │ │ │ ├── options.ts │ │ │ │ └── script.ts │ │ │ ├── test/ │ │ │ │ ├── basic-test.ts │ │ │ │ └── utils.ts │ │ │ └── translate/ │ │ │ ├── assets.ts │ │ │ ├── css.ts │ │ │ ├── html.ts │ │ │ ├── index.ts │ │ │ ├── module.ts │ │ │ ├── options.ts │ │ │ ├── script.ts │ │ │ └── utils.ts │ │ └── tsconfig.json │ ├── paperclip-language-service/ │ │ ├── LICENSE │ │ ├── README.md │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── autocomplete.ts │ │ │ ├── collect-ast-info.ts │ │ │ ├── completion-items.ts │ │ │ ├── css-color-names.ts │ │ │ ├── css-decl-name-constants.ts │ │ │ ├── css-decl-value-constants.ts │ │ │ ├── error-service.ts │ │ │ ├── index.ts │ │ │ ├── language-service.ts │ │ │ ├── state.ts │ │ │ ├── tag-name-constants.ts │ │ │ ├── test/ │ │ │ │ ├── basic-test.ts │ │ │ │ ├── colors-test.ts │ │ │ │ ├── definitions-test.ts │ │ │ │ ├── links-test.ts │ │ │ │ └── suggestion-test.ts │ │ │ └── utils.ts │ │ └── tsconfig.json │ ├── paperclip-loader/ │ │ ├── .eslintrc.json │ │ ├── .npmignore │ │ ├── LICENSE │ │ ├── README.md │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ └── test/ │ │ │ └── basic-test.ts │ │ └── tsconfig.json │ ├── paperclip-monaco/ │ │ ├── LICENSE │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ └── languages/ │ │ │ ├── adapter.ts │ │ │ ├── html.ts │ │ │ ├── pcss.ts │ │ │ ├── register.ts │ │ │ ├── script.ts │ │ │ ├── service/ │ │ │ │ ├── ast-info.ts │ │ │ │ ├── async-provider.ts │ │ │ │ ├── autocomplete.ts │ │ │ │ ├── base.ts │ │ │ │ ├── channel.ts │ │ │ │ ├── css-color-names.ts │ │ │ │ ├── css-constants.ts │ │ │ │ ├── css-declaration-constants.ts │ │ │ │ ├── index.ts │ │ │ │ └── worker.ts │ │ │ └── worker.ts │ │ └── tsconfig.json │ ├── paperclip-repl/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── paperclip.config.json │ │ ├── src/ │ │ │ ├── app.ts │ │ │ ├── controllers/ │ │ │ │ ├── channel-handler.ts │ │ │ │ ├── channels.ts │ │ │ │ ├── designer/ │ │ │ │ │ └── index.ts │ │ │ │ ├── paperclip.ts │ │ │ │ ├── parent.ts │ │ │ │ ├── worker/ │ │ │ │ │ ├── designer-channel-handler.ts │ │ │ │ │ ├── entry.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── io.ts │ │ │ │ │ └── paperclip.ts │ │ │ │ └── worker-connection.ts │ │ │ ├── entry.tsx │ │ │ ├── index.html │ │ │ └── index.ts │ │ ├── tsconfig.json │ │ └── webpack/ │ │ ├── webpack.config-base.js │ │ ├── webpack.config-esm.js │ │ ├── webpack.config-web.js │ │ └── webpack.config.js │ ├── paperclip-source-writer/ │ │ ├── LICENSE │ │ ├── README.md │ │ ├── index.d.ts │ │ ├── package.json │ │ ├── src/ │ │ │ ├── index.ts │ │ │ ├── mutations.ts │ │ │ ├── string-editor.ts │ │ │ ├── test/ │ │ │ │ ├── basic-test.ts │ │ │ │ └── utils.ts │ │ │ └── writer.ts │ │ └── tsconfig.json │ ├── paperclip-test-utils/ │ │ ├── LICENSE │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── package.json │ │ ├── src/ │ │ │ └── index.ts │ │ └── tsconfig.json │ ├── paperclip-utils/ │ │ ├── .eslintrc.json │ │ ├── LICENSE │ │ ├── README.md │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── base/ │ │ │ │ ├── ast.ts │ │ │ │ └── virt.ts │ │ │ ├── core/ │ │ │ │ ├── actions.ts │ │ │ │ ├── ast.ts │ │ │ │ ├── config.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── diagnostics.ts │ │ │ │ ├── errors.ts │ │ │ │ ├── events.ts │ │ │ │ ├── graph.ts │ │ │ │ ├── memo.ts │ │ │ │ ├── module-ast.ts │ │ │ │ ├── promise.ts │ │ │ │ ├── report.ts │ │ │ │ ├── resolve.ts │ │ │ │ ├── url.ts │ │ │ │ └── utils.ts │ │ │ ├── css/ │ │ │ │ ├── ast.ts │ │ │ │ ├── decl-value-ast.ts │ │ │ │ ├── exports.ts │ │ │ │ ├── patcher.ts │ │ │ │ ├── stringify-sheet.ts │ │ │ │ ├── style-inspection.ts │ │ │ │ ├── virt-mutation.ts │ │ │ │ └── virt.ts │ │ │ ├── html/ │ │ │ │ ├── ast.ts │ │ │ │ ├── exports.ts │ │ │ │ ├── patcher.ts │ │ │ │ ├── stringify-virt-node.ts │ │ │ │ ├── tree.ts │ │ │ │ ├── virt-mtuation.ts │ │ │ │ └── virt.ts │ │ │ ├── index.ts │ │ │ ├── node/ │ │ │ │ └── source-watcher.ts │ │ │ ├── script/ │ │ │ │ ├── ast.ts │ │ │ │ └── virt.ts │ │ │ └── test/ │ │ │ ├── basic-test.ts │ │ │ └── config-test.ts │ │ └── tsconfig.json │ ├── paperclip-vscode/ │ │ ├── .eslintrc.json │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── .nycrc.json │ │ ├── .vscodeignore │ │ ├── LICENSE │ │ ├── README.md │ │ ├── languages/ │ │ │ ├── paperclip-css-language-configuration.json │ │ │ └── paperclip-html-language-configuration.json │ │ ├── package.json │ │ ├── paperclip/ │ │ │ ├── .vscodeignore │ │ │ ├── CHANGELOG.md │ │ │ ├── README.md │ │ │ ├── language-configuration.json │ │ │ ├── package.json │ │ │ └── syntaxes/ │ │ │ └── paperclip.tmLanguage.json │ │ ├── scripts/ │ │ │ ├── scrape-css-declarations.js │ │ │ └── utils.js │ │ ├── src/ │ │ │ ├── extension/ │ │ │ │ ├── channels.ts │ │ │ │ ├── command-manager.ts │ │ │ │ ├── document-manager.ts │ │ │ │ ├── index.ts │ │ │ │ ├── language/ │ │ │ │ │ ├── client.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── server/ │ │ │ │ │ ├── connection.ts │ │ │ │ │ ├── design-server.ts │ │ │ │ │ ├── documents.ts │ │ │ │ │ ├── events.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ └── resolver.ts │ │ │ │ ├── preview/ │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── live-window-manager.ts │ │ │ │ │ ├── live-window.ts │ │ │ │ │ └── service.ts │ │ │ │ ├── rpc/ │ │ │ │ │ └── index.ts │ │ │ │ ├── utils.ts │ │ │ │ └── version-check.ts │ │ │ └── scripts/ │ │ │ ├── build.ts │ │ │ └── theme.ts │ │ ├── syntaxes/ │ │ │ ├── highlight-test.pc │ │ │ ├── paperclip-css.json │ │ │ ├── paperclip-css.yml │ │ │ ├── paperclip-html.json │ │ │ ├── paperclip-html.yaml │ │ │ └── paperclip.tmLanguage.json │ │ └── tsconfig.json │ ├── paperclip-web-renderer/ │ │ ├── .eslintrc.json │ │ ├── .yo-rc.json │ │ ├── LICENSE │ │ ├── README.md │ │ ├── browser.js │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── base.ts │ │ │ ├── cssom-patcher.ts │ │ │ ├── dom-patcher.ts │ │ │ ├── frame-renderer.ts │ │ │ ├── frame2-renderer.ts │ │ │ ├── frames-patcher.ts │ │ │ ├── index.ts │ │ │ ├── native-renderer.ts │ │ │ ├── renderer.ts │ │ │ ├── test/ │ │ │ │ ├── change-test.ts │ │ │ │ ├── frame-test.ts │ │ │ │ ├── fuzzy-test.ts │ │ │ │ ├── random/ │ │ │ │ │ ├── document.ts │ │ │ │ │ ├── html.ts │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── styles.ts │ │ │ │ │ └── utils.ts │ │ │ │ └── utils.ts │ │ │ └── utils/ │ │ │ ├── index.ts │ │ │ └── misc.ts │ │ ├── tsconfig.json │ │ ├── uis/ │ │ │ ├── loader.pc │ │ │ └── paperclip.config.json │ │ └── webpack.config.js │ ├── paperclip-website/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── babel.config.js │ │ ├── blog/ │ │ │ └── 2020-03-01-introducing-paperclip.md │ │ ├── docs/ │ │ │ ├── configure-jest.md │ │ │ ├── configure-paperclip.md │ │ │ ├── configure-percy.md │ │ │ ├── configure-prettier.md │ │ │ ├── configure-webpack.md │ │ │ ├── getting-started-cofigure.md │ │ │ ├── getting-started-cra.md │ │ │ ├── getting-started-first-ui.md │ │ │ ├── getting-started-new-project.md │ │ │ ├── getting-started-vscode.md │ │ │ ├── getting-started-webpack.md │ │ │ ├── guide-compiler.md │ │ │ ├── guide-dynamic-styles.md │ │ │ ├── guide-how-to-use.md │ │ │ ├── guide-migrating-to-paperclip.md │ │ │ ├── guide-modules.md │ │ │ ├── guide-organization.md │ │ │ ├── guide-theming.md │ │ │ ├── guide-theming2.md │ │ │ ├── guide-thinking-in-paperclip.md │ │ │ ├── guide-third-party-libraries.md │ │ │ ├── guide-visual-tools.md │ │ │ ├── guide-vscode.md │ │ │ ├── guide-why.md │ │ │ ├── guide-workarounds.md │ │ │ ├── guide-writing-components.md │ │ │ ├── guide-writing-previews.md │ │ │ ├── installation.md │ │ │ ├── introduction.md │ │ │ ├── usage-cli.md │ │ │ ├── usage-react.md │ │ │ ├── usage-syntax.md │ │ │ ├── usage-troubleshooting.md │ │ │ ├── visual-regression-tooling.md │ │ │ └── visual-tooling.md │ │ ├── docusaurus.config.js │ │ ├── draft/ │ │ │ ├── 2021-01-05-scoped-css.md │ │ │ ├── 2021-12-31-avoiding-vendor-lock-in.md │ │ │ └── 2021-scoped-css-for-everyone.md │ │ ├── package.json │ │ ├── paperclip.config.json │ │ ├── plugins/ │ │ │ ├── live-editor.js │ │ │ ├── paperclip.js │ │ │ ├── shim/ │ │ │ │ └── index.js │ │ │ └── theme/ │ │ │ └── CodeBlock/ │ │ │ └── index.jsx │ │ ├── sidebars.js │ │ ├── src/ │ │ │ ├── css/ │ │ │ │ └── custom.css │ │ │ ├── demos/ │ │ │ │ ├── ice-cream-loader.js │ │ │ │ ├── import-code.js │ │ │ │ ├── main.js │ │ │ │ ├── simple-pc.js │ │ │ │ ├── site-demo.js │ │ │ │ ├── tailwind-and-animate.js │ │ │ │ ├── tailwind.css.js │ │ │ │ └── third-party-css.js │ │ │ ├── pages/ │ │ │ │ ├── index-old.js │ │ │ │ ├── index.js │ │ │ │ ├── repl.js │ │ │ │ └── styles.module.css │ │ │ └── styles/ │ │ │ ├── button.pc │ │ │ ├── colors.pc │ │ │ ├── fonts/ │ │ │ │ ├── open-sans/ │ │ │ │ │ └── font-face.pc │ │ │ │ ├── preview.pc │ │ │ │ ├── roboto/ │ │ │ │ │ └── font-face.pc │ │ │ │ └── sora/ │ │ │ │ └── font-face.pc │ │ │ ├── icons/ │ │ │ │ └── icons.pc │ │ │ ├── index-backend.pc │ │ │ ├── index.pc │ │ │ ├── index2.pc │ │ │ ├── layout.pc │ │ │ ├── test.pc │ │ │ ├── test2.pc │ │ │ ├── test3.pc │ │ │ └── typography.pc │ │ └── static/ │ │ ├── .nojekyll │ │ └── CNAME │ ├── percy-paperclip/ │ │ ├── .eslintrc.json │ │ ├── LICENSE │ │ ├── README.md │ │ ├── bin/ │ │ │ └── percy-paperclip │ │ ├── package.json │ │ ├── src/ │ │ │ ├── cli.ts │ │ │ ├── static-server.ts │ │ │ └── utils.ts │ │ └── tsconfig.json │ ├── prettier-plugin-paperclip/ │ │ ├── LICENSE │ │ ├── examples/ │ │ │ ├── test.css │ │ │ └── test.pc │ │ ├── fixtures/ │ │ │ ├── .prettierignore │ │ │ ├── basic-comment-in.pc │ │ │ ├── basic-comment-out.pc │ │ │ ├── basic-in.pc │ │ │ ├── basic-out.pc │ │ │ ├── basic-style-in.pc │ │ │ └── basic-style-out.pc │ │ ├── package.json │ │ ├── src/ │ │ │ ├── embed.ts │ │ │ ├── index.ts │ │ │ ├── options.ts │ │ │ ├── print.ts │ │ │ ├── test/ │ │ │ │ └── print-test.ts │ │ │ └── utils.ts │ │ └── tsconfig.json │ ├── tandem-common/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── package.json │ │ ├── src/ │ │ │ ├── disposable.ts │ │ │ ├── http-server.ts │ │ │ ├── index.ts │ │ │ ├── logger.ts │ │ │ ├── mime.ts │ │ │ └── utils.ts │ │ └── tsconfig.json │ ├── tandem-design-system/ │ │ ├── .gitignore │ │ ├── package.json │ │ ├── paperclip.config.json │ │ ├── src/ │ │ │ ├── Button.pc │ │ │ ├── Page.pc │ │ │ ├── TextInput.pc │ │ │ ├── TextInput.tsx │ │ │ ├── atoms.pc │ │ │ ├── index.tsx │ │ │ ├── open-sans/ │ │ │ │ └── font-face.pc │ │ │ └── roboto/ │ │ │ └── index.pc │ │ └── tsconfig.json │ ├── tandem-designer/ │ │ ├── .eslintrc.json │ │ ├── .gitignore │ │ ├── .npmignore │ │ ├── README.md │ │ ├── babel.config.js │ │ ├── brainstorm/ │ │ │ └── ui/ │ │ │ └── index.pc │ │ ├── gitignore │ │ ├── jest.config.ts │ │ ├── package.json │ │ ├── paperclip.config.json │ │ ├── src/ │ │ │ ├── __TEST__/ │ │ │ │ ├── basic.test.tsx │ │ │ │ ├── edit.test.tsx │ │ │ │ ├── hotkeys.test.tsx │ │ │ │ ├── ui.test.tsx │ │ │ │ └── utils.ts │ │ │ ├── actions/ │ │ │ │ ├── base.ts │ │ │ │ ├── external-actions.ts │ │ │ │ ├── index.ts │ │ │ │ ├── instance-actions.ts │ │ │ │ ├── server-actions.ts │ │ │ │ ├── ui-actions.ts │ │ │ │ ├── util.ts │ │ │ │ └── workspace-actions.ts │ │ │ ├── app.tsx │ │ │ ├── components/ │ │ │ │ ├── Box/ │ │ │ │ │ └── index.pc │ │ │ │ ├── Field/ │ │ │ │ │ └── index.pc │ │ │ │ ├── FrameContainer/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── Grid/ │ │ │ │ │ └── index.pc │ │ │ │ ├── InfiniteScroller/ │ │ │ │ │ ├── index.pc │ │ │ │ │ └── index.tsx │ │ │ │ ├── List/ │ │ │ │ │ └── index.pc │ │ │ │ ├── Main/ │ │ │ │ │ ├── CodeMode/ │ │ │ │ │ │ ├── MonacoEditor/ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── SlimEditor/ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ ├── prism.css │ │ │ │ │ │ │ ├── theme.css │ │ │ │ │ │ │ └── theme.ts │ │ │ │ │ │ ├── Toolbar/ │ │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── DesignMode/ │ │ │ │ │ │ ├── Birdseye/ │ │ │ │ │ │ │ ├── Cell.tsx │ │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── Canvas/ │ │ │ │ │ │ │ ├── Frames/ │ │ │ │ │ │ │ │ ├── Frame.tsx │ │ │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── Preview/ │ │ │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── Tools/ │ │ │ │ │ │ │ │ ├── Distance/ │ │ │ │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── Empty/ │ │ │ │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── Frames/ │ │ │ │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── Pixels/ │ │ │ │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── Selectable/ │ │ │ │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── TextEditor/ │ │ │ │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── normalize-wheel.ts │ │ │ │ │ │ ├── ErrorBanner/ │ │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── Footer/ │ │ │ │ │ │ │ ├── Breadcrumbs/ │ │ │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── Layers/ │ │ │ │ │ │ │ │ ├── Children.tsx │ │ │ │ │ │ │ │ ├── Element.tsx │ │ │ │ │ │ │ │ ├── Node.tsx │ │ │ │ │ │ │ │ ├── Text.tsx │ │ │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── LeftSidebar/ │ │ │ │ │ │ │ └── index.pc │ │ │ │ │ │ ├── MediaPreview/ │ │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── Quickfind/ │ │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── RightSidebar/ │ │ │ │ │ │ │ ├── CSSInspector/ │ │ │ │ │ │ │ │ ├── ComputedInspector/ │ │ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ │ │ └── squash-inspection.ts │ │ │ │ │ │ │ │ ├── Declaration/ │ │ │ │ │ │ │ │ │ ├── Name.tsx │ │ │ │ │ │ │ │ │ ├── Value.tsx │ │ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ │ │ ├── useDeclarationPart.ts │ │ │ │ │ │ │ │ │ └── utils.ts │ │ │ │ │ │ │ │ ├── DeclarationList.tsx │ │ │ │ │ │ │ │ ├── RuleInspector/ │ │ │ │ │ │ │ │ │ ├── StyleRule.tsx │ │ │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ │ └── inputs/ │ │ │ │ │ │ │ │ └── ColorPicker/ │ │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ │ ├── styles.pc │ │ │ │ │ │ │ │ └── utils.ts │ │ │ │ │ │ │ ├── Inspector/ │ │ │ │ │ │ │ │ └── index.pc │ │ │ │ │ │ │ ├── MoreStyles/ │ │ │ │ │ │ │ │ └── index.pc │ │ │ │ │ │ │ ├── PrettyStyler/ │ │ │ │ │ │ │ │ └── index.pc │ │ │ │ │ │ │ ├── computed-styles.pc │ │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── Toolbar/ │ │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ │ └── index2.pc │ │ │ │ │ │ ├── WindowResizer/ │ │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ └── index.tsx │ │ │ │ │ ├── LeftSidebar/ │ │ │ │ │ │ ├── Header/ │ │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── files/ │ │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ │ └── index.tsx │ │ │ │ │ │ ├── index.pc │ │ │ │ │ │ ├── index.tsx │ │ │ │ │ │ └── symbols/ │ │ │ │ │ │ └── index.pc │ │ │ │ │ ├── Pane/ │ │ │ │ │ │ └── index.pc │ │ │ │ │ ├── TextEditor/ │ │ │ │ │ │ └── index.pc │ │ │ │ │ ├── create-app-store.ts │ │ │ │ │ ├── index.pc │ │ │ │ │ └── index.tsx │ │ │ │ ├── Modal/ │ │ │ │ │ ├── index.pc │ │ │ │ │ └── index.tsx │ │ │ │ ├── Pane/ │ │ │ │ │ └── index.pc │ │ │ │ ├── Prompt/ │ │ │ │ │ └── index.tsx │ │ │ │ ├── ResizableContainer/ │ │ │ │ │ ├── index.pc │ │ │ │ │ └── index.tsx │ │ │ │ ├── Select/ │ │ │ │ │ ├── index.pc │ │ │ │ │ ├── index.tsx │ │ │ │ │ └── index2.pc │ │ │ │ ├── Spinner/ │ │ │ │ │ ├── index.pc │ │ │ │ │ └── index.tsx │ │ │ │ ├── TextInput/ │ │ │ │ │ ├── base.tsx │ │ │ │ │ ├── blended.pc │ │ │ │ │ ├── blended.tsx │ │ │ │ │ ├── filter.pc │ │ │ │ │ └── index.tsx │ │ │ │ ├── Toggle/ │ │ │ │ │ └── index.pc │ │ │ │ ├── Tooltip/ │ │ │ │ │ └── index.pc │ │ │ │ ├── Tree/ │ │ │ │ │ ├── index.pc │ │ │ │ │ └── index.tsx │ │ │ │ └── icons/ │ │ │ │ └── index.pc │ │ │ ├── constants/ │ │ │ │ └── index.ts │ │ │ ├── contexts/ │ │ │ │ └── index.ts │ │ │ ├── engines/ │ │ │ │ ├── base.ts │ │ │ │ ├── index.ts │ │ │ │ ├── utils.ts │ │ │ │ └── workspace/ │ │ │ │ ├── index.ts │ │ │ │ ├── managers/ │ │ │ │ │ ├── documents.ts │ │ │ │ │ ├── edit.ts │ │ │ │ │ ├── main-document.ts │ │ │ │ │ ├── paperclip-engine.ts │ │ │ │ │ └── project.ts │ │ │ │ └── utils.ts │ │ │ ├── entry.tsx │ │ │ ├── global.d.ts │ │ │ ├── hooks/ │ │ │ │ ├── useAppStore/ │ │ │ │ │ └── index.ts │ │ │ │ ├── useCache/ │ │ │ │ │ └── index.ts │ │ │ │ ├── useDragger/ │ │ │ │ │ └── index.ts │ │ │ │ ├── useFrame/ │ │ │ │ │ └── index.ts │ │ │ │ ├── useFrameContainer/ │ │ │ │ │ └── index.ts │ │ │ │ ├── useFrameMount/ │ │ │ │ │ └── index.ts │ │ │ │ └── useFrameUrlResolver/ │ │ │ │ └── index.ts │ │ │ ├── index.html │ │ │ ├── index.ts │ │ │ ├── reducers/ │ │ │ │ ├── designer.ts │ │ │ │ ├── history.ts │ │ │ │ ├── index.ts │ │ │ │ └── shared.ts │ │ │ ├── rpc/ │ │ │ │ └── channels.ts │ │ │ ├── sagas/ │ │ │ │ ├── canvas.ts │ │ │ │ ├── hotkeys.ts │ │ │ │ ├── index.ts │ │ │ │ ├── rpc/ │ │ │ │ │ ├── channels.ts │ │ │ │ │ ├── connection.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── ui.ts │ │ │ │ ├── utils.ts │ │ │ │ └── workspace/ │ │ │ │ └── index.ts │ │ │ ├── state/ │ │ │ │ ├── geom.ts │ │ │ │ ├── index.ts │ │ │ │ └── result.ts │ │ │ ├── styles/ │ │ │ │ ├── atoms.pc │ │ │ │ ├── index.pc │ │ │ │ └── utils.pc │ │ │ └── utils/ │ │ │ ├── dnd.ts │ │ │ └── index.ts │ │ ├── test/ │ │ │ └── jest.setup.js │ │ ├── tsconfig.json │ │ └── webpack.config.js │ ├── tandem-workspace/ │ │ ├── Dockerfile │ │ ├── README.md │ │ ├── bin/ │ │ │ └── tandem-workspace │ │ ├── examples/ │ │ │ └── todo/ │ │ │ └── index.pc │ │ ├── package.json │ │ ├── src/ │ │ │ ├── controllers/ │ │ │ │ ├── designer.ts │ │ │ │ ├── git.ts │ │ │ │ ├── package.ts │ │ │ │ ├── paperclip.ts │ │ │ │ ├── project.ts │ │ │ │ ├── rpc.ts │ │ │ │ ├── ssh.ts │ │ │ │ ├── vfs.ts │ │ │ │ └── workspace.ts │ │ │ ├── core/ │ │ │ │ ├── kernel.ts │ │ │ │ └── options.ts │ │ │ ├── index.ts │ │ │ ├── routes/ │ │ │ │ └── index.ts │ │ │ ├── server.ts │ │ │ ├── test/ │ │ │ │ ├── basic-test.ts │ │ │ │ └── utils.ts │ │ │ └── todos.pc │ │ └── tsconfig.json │ ├── tandem-workspace-client/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── connection.ts │ │ │ ├── index.ts │ │ │ ├── paperclip.ts │ │ │ └── project.ts │ │ └── tsconfig.json │ ├── tandem-workspace-core/ │ │ ├── package.json │ │ ├── src/ │ │ │ ├── channels.ts │ │ │ ├── index.ts │ │ │ └── state.ts │ │ └── tsconfig.json │ └── zeplin-paperclip/ │ ├── .eslintrc.json │ ├── .npmignore │ ├── LICENSE │ ├── README.md │ ├── bin/ │ │ └── zeplin-paperclip │ ├── examples/ │ │ └── test/ │ │ ├── .gitignore │ │ └── package.json │ ├── package.json │ ├── src/ │ │ ├── api.ts │ │ ├── cast.ts │ │ ├── cli.ts │ │ ├── contants.ts │ │ ├── pc-compiler.ts │ │ ├── pull.ts │ │ ├── state.ts │ │ └── utils.ts │ └── tsconfig.json └── todos.md