* init
* add: vite dev build working
* fix: href serving from public
* feat: add ejs plugin
* feat: migrated env files and ejs templating
* chore: add types related to envs
* chore: add vite-env types
* feat: support vite pwa
* chore: upgrade vite pwa
* chore: pin node version to 16.18.1
* chore: preserve use of nodejs 14
* refactor: preserve REACT_APP as env prefix
* chore: support esm environment variables
* fix ts config
* use VITE prefix and remove vite-plugin-env-compatible
* introduce import-meta-loader for building pacakge as webpack isn't compatible with import.meta syntax
* lint
* remove import.meta.env in main.js
* set debug flag to false
* migrate to vitest and use jest-canvas-mock 2.4.0 so its comp
atible with vite
* integrate vitest-ui
* fix most of teh test
* snaps
* Add script for testing with vite ui
* fix all tests related to mocking
* fix more test
* fix more
* fix flip.test.tsx
* fix contentxmenu snaps
* fix regression snaps
* fix excalidraw.test.tsx and this makes all tests finally pass :)
* use node 16
* specify node version
* use node 16 in lint as well
* fix mobile.test.tsx
* use node 16
* add style-loader
* upgrade to node 18
* fix lint package.json
* support eslint with vite
* fix lint
* fix lint
* fix ts
* remove pwa/sw stuff
* use env vars in EJS the vite way
* fix lint
* move remainig jest mock/spy to vite
* don't cache locales
* fix regex
* add fonts cache
* tweak
* add custom service worker
* upgrade vite and create font cache again
* cache fonts.css and locales
* tweak
* use manifestTransforms for filtering locales
* use assets js pattern for locales
* add font.css to globIgnore so its pushed to fonts cache
* create a separate chunk for locales with rollup
* remove manifestTransforms and fix glob pattern for locales to filter from workbox pre-cache
* push sourcemaps in production
* add comments in config
* lint
* use node 18
* disable pwa in dev
* fix
* fix
* increase limit of bundle
* upgrade vite-pwa to latest
* remove public/workbox so workbox assets are not precached
* fon't club en.json and percentages.json with manual locales chunk to fix first load+offline mode
* tweak regex
* remove happy-dom as its not used
* add comment
* use any instead of ts-ignore
* cleanup
* remove jest-canvas-mock resolution as vite-canvas-mock was patched locking deps at 2.4.0
* use same theme color present in entry point
* remove vite-plugin-eslint as it improves DX significantly
* integrate vite-plugin-checker for ts errors
* add nabla/vite-plugin-eslint
* use eslint from checker only
* add env variable VITE_APP_COLLAPSE_OVERLAY for collapsing the checker overlay
* tweak vite checker overlay badge position
* Enable eslint behind flag as its not working well with windows with non WSL
* make port configurable
* open the browser when server ready
* enable eslint by default
---------
Co-authored-by: Weslley Braga <weslley@bambee.com>
Co-authored-by: dwelle <luzar.david@gmail.com>
* init
* add: vite dev build working
* fix: href serving from public
* feat: add ejs plugin
* feat: migrated env files and ejs templating
* chore: add types related to envs
* chore: add vite-env types
* feat: support vite pwa
* chore: upgrade vite pwa
* chore: pin node version to 16.18.1
* chore: preserve use of nodejs 14
* refactor: preserve REACT_APP as env prefix
* chore: support esm environment variables
* fix ts config
* use VITE prefix and remove vite-plugin-env-compatible
* introduce import-meta-loader for building pacakge as webpack isn't compatible with import.meta syntax
* lint
* remove import.meta.env in main.js
* set debug flag to false
* migrate to vitest and use jest-canvas-mock 2.4.0 so its comp
atible with vite
* integrate vitest-ui
* fix most of teh test
* snaps
* Add script for testing with vite ui
* fix all tests related to mocking
* fix more test
* fix more
* fix flip.test.tsx
* fix contentxmenu snaps
* fix regression snaps
* fix excalidraw.test.tsx and this makes all tests finally pass :)
* use node 16
* specify node version
* use node 16 in lint as well
* fix mobile.test.tsx
* use node 16
* add style-loader
* upgrade to node 18
* fix lint package.json
* support eslint with vite
* fix lint
* fix lint
* fix ts
* remove pwa/sw stuff
* use env vars in EJS the vite way
* fix lint
* move remainig jest mock/spy to vite
* don't cache locales
* fix regex
* add fonts cache
* tweak
* add custom service worker
* upgrade vite and create font cache again
* cache fonts.css and locales
* tweak
* use manifestTransforms for filtering locales
* use assets js pattern for locales
* add font.css to globIgnore so its pushed to fonts cache
* create a separate chunk for locales with rollup
* remove manifestTransforms and fix glob pattern for locales to filter from workbox pre-cache
* push sourcemaps in production
* add comments in config
* lint
* use node 18
* disable pwa in dev
* fix
* fix
* increase limit of bundle
* upgrade vite-pwa to latest
* remove public/workbox so workbox assets are not precached
* fon't club en.json and percentages.json with manual locales chunk to fix first load+offline mode
* tweak regex
* remove happy-dom as its not used
* add comment
* use any instead of ts-ignore
* cleanup
* remove jest-canvas-mock resolution as vite-canvas-mock was patched locking deps at 2.4.0
* use same theme color present in entry point
---------
Co-authored-by: Weslley Braga <weslley@bambee.com>
Co-authored-by: dwelle <luzar.david@gmail.com>
* feat: add flipping when resizing multiple elements
* fix: image elements not flipping its content
* test: fix accidental resizing in grouping test
* fix: angles not flipping vertically when resizing
* feat: add flipping multiple elements with a command
* revert: image elements not flipping its content
This reverts commit cb989a6c66e62a02a8c04ce41f12507806c8d0a0.
* fix: add special cases for flipping text & images
* fix: a few corner cases for flipping
* fix: remove angle flip
* fix: bound text scaling when resizing
* fix: linear elements drifting away after multiple flips
* revert: fix linear elements drifting away after multiple flips
This reverts commit bffc33dd3ffe56c72029eee6aca843d992bac7ab.
* fix: linear elements unstable bounds
* revert: linear elements unstable bounds
This reverts commit 22ae9b02c4a49f0ed6448c27abe1969cf6abb1e3.
* fix: hand-drawn lines shift after flipping
* test: fix flipping tests
* test: fix the number of context menu items
* fix: incorrect scaling due to ignoring bound text when finding selection bounds
* fix: bound text coordinates not being updated
* fix: lines bound text rotation
* fix: incorrect placement of bound lines on flip
* remove redundant predicates in actionFlip
* update test
* refactor resizeElement with some renaming and comments
* fix grouped bounded text elements not being flipped correctly
* combine mutation for bounded text element
* remove incorrect return
* fix: linear elements bindings after flipping
* revert: remove incorrect return
This reverts commit e6b205ca900b504fe982e4ac1b3b19dcfca246b8.
* fix: minimum size for all elements in selection
---------
Co-authored-by: Ryan Di <ryan.weihao.di@gmail.com>
* fix: Replaced KeyboardEvent.code with KeyboardEvent.key for all letters
* fix: reverted all keybindings that included alt to use code instead of keys
Co-authored-by: Aakansha Doshi <aakansha1216@gmail.com>
* chore: Add tracking for hyperlinks
* update
* fix
* remove
* tweak
* disable ga logging in dev again
* add logging for hyperlink `edit` & support for tracking in manager
* event label tweaks
* fix tests & make more typesafe
Co-authored-by: dwelle <luzar.david@gmail.com>
* feat: Support hypelinks
* dont show edit when link not present
* auto submit on blur
* Add link button in sidebar and do it react way
* add key to hyperlink to remount when element selection changes
* autofocus input
* remove click handler and use pointerup/down to show /hide popup
* add keydown and support enter/escape to submit
* show extrrnal link icon when element has link
* use icons and open link in new tab
* dnt submit unless link updated
* renamed ffiles
* remove unnecessary changes
* update snap
* hide link popup once user starts interacting with element and show again only if clicked outside and clicked on element again
* render link icon outside the element
* fix hit testing
* rewrite implementation to render hyperlinks outside elements and hide when element selected
* remove
* remove
* tweak icon position and size
* rotate link icon when element rotated, handle zooming and render exactly where ne resize handle is rendered
* no need to create a new reference anymore for element when link added/updated
* rotate the link image as well when rotating element
* calculate hitbox of link icon and show pointer when hovering over link icon
* open link when clicked on link icon
* show tooltip when hovering over link icon
* show link action only when single element selected
* support other protocols
* add shortcut cmd/ctrl+k to edit/update link
* don't hide popup after submit
* renderes decreased woo
* Add context mneu label to add/edit link
* fix tests
* remove tick and show trash when in edit mode
* show edit view when element contains link
* fix snap
* horizontally center the hyperlink container with respect to elemnt
* fix padding
* remove checkcircle
* show popup on hover of selected element and dismiss when outside hitbox
* check if element has link before setting popup state
* move logic of auto hide to hyperlink and dnt hide when editing
* hide popover when drag/resize/rotate
* unmount during autohide
* autohide after 500ms
* fix regression
* prevent cmd/ctrl+k when inside link editor
* submit when input not updated
* allow custom urls
* fix centering of popup when zoomed
* fix hitbox during zoom
* fix
* tweak link normalization
* touch hyperlink tooltip DOM only if needed
* consider 0 if no offsetY
* reduce hitbox of link icon and make sure link icon doesn't show on top of higher z-index elements
* show link tooltip only if element has higher z-index
* dnt show hyperlink popup when selection changes from element with link to element with no link and also hide popover when element type changes from selection to something else
* lint: EOL
* fix link icon tooltip positioning
* open the link only when last pointer down and last pointer up hit the link hitbox
* render tooltip after 300ms delay
* ensure link popup and editor input have same height
* wip: cache the link icon canvas
* fix the image quality after caching using device pixel ratio yay
* some cleanup
* remove unused selectedElementIds from renderConfig
* Update src/renderer/renderElement.ts
* fix `opener` vulnerability
* tweak styling
* decrease padding
* open local links in the same tab
* fix caching
* code style refactor
* remove unnecessary save & restore
* show link shortcut in help dialog
* submit on cmd/ctrl+k
* merge state props
* Add title for link
* update editview if prop changes
* tweak link action logic
* make `Hyperlink` compo editor state fully controlled
* dont show popup when context menu open
* show in contextMenu only for single selection & change pos
* set button `selected` state
* set contextMenuOpen on pointerdown
* set contextMenyOpen to false when action triggered
* don't render link icons on export
* fix tests
* fix buttons wrap
* move focus states to input top-level rule
* fix elements sharing `Hyperlink` state
* fix hitbox for link icon in case of rect
* Early return if hitting link icon
Co-authored-by: dwelle <luzar.david@gmail.com>
* feat: Allow publishing libraries from UI
* Add status for each library item and show publish only for unpublished libs
* Add publish library dialog
* Pass the data to publish the library
* pass lib blob
* Handle old and new libraries when importing
* Better error handling
* Show publish success when library submitted for review
* don't close library when publish success dialog open
* Support multiple libs deletion and publish
* Set status to published once library submitted for review
* Save to LS after library published
* unique key for publish and delete
* fix layout shift when hover and also highlight selected library items
* design improvements
* migrate old library to the new one
* fix
* fix tests
* use i18n
* Support submit type in toolbutton
* Use html5 form validation, add asteriks for required fields, add twitter handle, mark github handle optional
* Add twitter handle in form state
* revert html5 validation as fetch is giving some issues :/
* clarify types around LibraryItems
* Add website optional field
* event.preventDefault to make htm5 form validationw work
* improve png generation by drawing a bounding box rect and aligining pngs to support multiple libs png
* remove ts-ignore
* add placeholders for fields
* decrease clickable area for checkbox by 0.5em
* add checkbox background color
* rename `items` to `elements`
* improve checkbox hit area
* show selected library items in publish dialog
* decrease dimensions by 3px to improve jerky experience when opening/closing library menu
* Don't close publish dialog when clicked outside
* Show selected library actions only when any library item selected and use icons instead of button
* rename library to libraryItems in excalidrawLib and added migration
* change icon and swap bg/color
* use blue brand color for hover/selected states
* prompt for confirmation when deleting library items
* separate unpublished items from published
* factor `LibraryMenu` into own file
* i18n and minor fixes for unpublished items
* fix not rendering empty cells when library empty
* don't render published section if empty and unpublished is not
* Add edit name functionality for library items
* fix
* edit lib name with onchange/blur
* bump library version
* prefer response error message
* add library urls to ENV vars
* mark lib item name as required
* Use input only for lib item name
* better error validation for lib items
* fix label styling for lib items
* design and i18n fixes
* Save publish dialog data to local storage and clear once published
* Add a note about MIT License
* Add note for guidelines
* Add tooltip for publish button
* Show spinner in submit button when submission is in progress
* assign id for older lib items when installed and set status as published for all lib when installed
* update export icon and support export library for selected items
* move LibraryMenuItems into its own component as its best to keep one comp per file
* fix spec
* Refactoring the library actions for reusablility
* show only load when items not present
* close on click outside in publish dialog
* ad dialog description and tweak copy
* vertically center input labels
* align input styles
* move author name input to other usernames
* rename param
* inline to simplify
* fix to not inline `undefined` class names
* fix version & include only latest lib schema in library export type
* await response callback
* refactor types
* refactor
* i18n
* align casing & tweaks
* move ls logic to publishLibrary
* support removal of item inside publish dialog
* fix labels for trash icon when items selected
* replace window.confirm for removal libs with confirm dialog
* fix input/textarea styling
* move library item menu scss to its own file
* use blue for load and cyan for publish
* reduce margin for submit and make submit => Submit
* Make library items header sticky
* move publish icon to left so there is no jerkiness when unpublish items selected
* update url
* fix grid gap between lib items
* Mark older items imported from initial data as unpublished
* add text to publish button on non-mobile
* add items counter
* fix test
* show personal and excal libs sections and personal goes first
* show toast on adding to library via contextMenu
* Animate plus icon and not the pending item
* fix snap
* use i18n when no item in publish dialog
* tweak style of new lib item
* show empty cells for both sections and set status as published for installed libs
* fix
* push selected item first in unpublished section
* set status as published for imported from webiste but unpublished for json
* Add items to the begining of library
* add `created` library item attr
* fix test
* use `defaultValue` instead of `value`
* fix dark theme styles
* fix toggle button not closing library
* close library menu on Escape
* tweak publish dialog item remove style
* fix remove icon in publish dialog
Co-authored-by: dwelle <luzar.david@gmail.com>