* refactor: change hires loader function name
* feat: add loading transition animation and improve performance
* refactor: refactor mutation handling in desktop codebase
- Modify the `initStage` function in `assets/ts/desktop/stage.ts`:
- Change the `onMutation` callback to accept a single mutation instead of an array of mutations.
- Update the conditions inside the callback to use `hold` instead of `skip`.
- Modify the `onMutation` function in `assets/ts/desktop/utils.ts`:
- Change the `callback` parameter to `trigger`.
- Update the implementation of the function to iterate over each mutation and check if it triggers the `trigger` function. If it does, disconnect the observer and break the loop.
* style: refactor state section and remove unnecessary code
- Remove the declaration of `lastIndex` on line 21
- Add a comment block for the state section
- Add a declaration of `lastIndex` for the state section
* refactor: refactor mobile collection and intersection functions
- Modify the `initCollection` function in `assets/ts/mobile/collection.ts`
- Remove the nested loop in the `initCollection` function
- Modify the `onIntersection` function in `assets/ts/mobile/utils.ts`
- Replace the callback parameter with a trigger parameter in the `onIntersection` function
- Remove the nested loop in the `onIntersection` function
* refactor: refactor Watchable class constructor to include lazy parameter
- Add a second parameter `lazy` in the constructor of the `Watchable` class in `globalUtils.ts`
- Set the default value of `lazy` to `true` in the constructor
- Add a condition to check if `e` is equal to `this.obj` and `this.lazy` is `true` to return in `watch`
- Delete the previous constructor definition in the `Watchable` class in `globalUtils.ts`
* fix: set state's lazy param to false
* refactor: refactor third party lib import
* refactor: refactor navigateVector logic and remove unused functions
* refactor: refactor HTML structure and styling in single.html
- Modify the `.info` class to `article` in `_article.scss`
- Remove the `nav.html` partial in `single.html`
- Change the class name from `info` to `article` in `single.html`
- Add the `nav.html` partial in `single.html`
* refactor: update handling of 404 page
- Now hugo will set unknown page title as "404"
- Add condition to return an empty image array if the document title starts with "404"
* docs: update documentation
* feat: refactor file structure and imports in mobile and desktop components
- Removed the import of `scrollable` from `assets/ts/mobile/scroll.ts`
- Renamed `assets/ts/mobile/mounted.ts` to `assets/ts/mobile/state.ts`
- Changed the import of `active` from `./stage` to `./state` in `assets/ts/desktop/customCursor.ts`
- Changed the import of `active` from `../state` to `../globalState` in `assets/ts/desktop/stage.ts`
- Changed the import of `active` from `./stage` to `./state` in `assets/ts/desktop/stageNav.ts`
- Renamed `assets/ts/state.ts` to `assets/ts/globalState.ts`
- Created a new file `assets/ts/desktop/state.ts`
- Added the interface `HistoryItem` to `assets/ts/desktop/state.ts`
- Added the variables `cordHist`, `isOpen`, `active`, and `isLoading` to `assets/ts/desktop/state.ts`
- Deleted the function `loader` from `assets/ts/desktop/stage.ts` and replaced it with `setLoaderForImage`
- Deleted the import of `./stage` from `assets/ts/desktop/stageNav.ts`
- Added the import of `minimizeImage` from `./stage` in `assets/ts/desktop/stageNav.ts`
- Deleted the import of `./mounted` from `assets/ts/mobile/collection.ts`
- Changed the import of `mounted` from `./mounted` to `./state` in `
* refactor: refactor the `onVisible` function to improve performance
- Modify the type of the `onVisible` function parameter `T` to extend `HTMLElement`
- Change the `entries.forEach` loop in the `onVisible` function to `entries.every`
* feat: add new function for detecting opacity changes in element
- Add a new function `onOpacityOne` in `assets/ts/utils.ts`
- The function uses a `MutationObserver` to check for opacity changes on an element
- When the element's opacity reaches `1`, the provided callback function is called
- The `MutationObserver` is disconnected after the callback is executed
* refactor: refactor function names and parameters in intersection and mutation observers
- Change the function name `onVisible` to `onIntersection`
- Modify the `callback` parameter in the `onIntersection` function to accept `IntersectionObserverEntry[]` and `IntersectionObserver` parameters
- Remove the code block that checks for intersection ratio and immediately calls the `callback` function in the `onIntersection` function
- Modify the function name `onOpacityOne` to `onMutation`
- Modify the `callback` parameter in the `onMutation` function to accept `MutationRecord[]` and `MutationObserver` parameters
- Add a default value for the `observeOptions` parameter in the `onMutation` function
* refactor: refine preload logic on both mobile and desktop
* refactor: refactor import statements and add new files
- The import statement for `Watchable` in `assets/ts/globalState.ts` has been changed from `../utils` to `../globalUtils`
- The import statement for `Watchable` in `assets/ts/desktop/state.ts` has been changed from `../utils` to `../globalUtils`
- The import statement for `decrement` and `increment` in `assets/ts/desktop/stageNav.ts` has been changed from `../utils` to `../globalUtils`
- A new file `utils.ts` has been added in the `assets/ts/desktop` directory
- The import statements for `getRandom`, `onIntersection`, and `type MobileImage` in `assets/ts/mobile/collection.ts` have been changed from `../utils` to `./utils`
- The `imgs` array in `assets/ts/mobile/collection.ts` has been changed from an array of `HTMLImageElement` to an array of `MobileImage`
- The import statements for `expand`, `loadGsap`, `loadSwiper`, and `removeDuplicates` in `assets/ts/mobile/gallery.ts` have been changed from `../utils` to `../globalUtils`
- The import statement for `type MobileImage` in `assets/ts/mobile/gallery.ts` has been changed from `./utils` to `../mobile/utils`
- The `galleryLoadImages` function in `assets/ts/mobile/gallery.ts` has been removed
- A new file `utils.ts`
* refactor: refactor swiper import and functions in mobile and global utils
* refactor: refactor navigation and image loading logic in desktop and mobile
* refactor: remove print function and optimize removeDuplicates return
* refactor: update text variable assignments and attributes
* refactor: update variable types in galleryImages and collectionImages in mobile/gallery.ts
* refactor: refactor variable types for consistency with naming conventions
* refactor: update animation durations and types in gallery functions
* refactor: refactor image loading logic and add console logs
* refactor: refactor sass hierarchy
* refactor: remove console logs in multiple files
* feat: add new CSS rule for hiding elements
- Add a new CSS rule for the class "hide" with a display property set to "none".
* feat: refactor image loading and navigation logic on desktop
- Add a line of code in `assets/ts/desktop/stage.ts` to reset the `src` of `elc` and add a class `hide` to it
- Add a line of code in `assets/ts/desktop/stage.ts` to call the `loader` function with `elc` as an argument
- Add a function `loader` in `assets/ts/desktop/stage.ts` to handle image loading and error events
- Modify the `initStageNav` function in `assets/ts/desktop/stageNav.ts` to watch the `isLoading` state and set custom cursor accordingly
- Modify the `initStageNav` function in `assets/ts/desktop/stageNav.ts` to handle close click events by calling the `handleClick` function and setting `isLoading` state to false
- Modify the `initStageNav` function in `assets/ts/desktop/stageNav.ts` to handle previous/next click events by calling the `handleClick` function only if `isLoading` is false
- Modify the `initStageNav` function in `assets/ts/desktop/stageNav.ts` to handle previous/next hover events by setting `loadedText` and updating custom cursor depending on `isLoading` state
* feat: refactor createGallery function and enhance loading functionality on mobile
- Add a loading text element to the gallery.scss file
- Add a loading indicator to the createGallery function in gallery.ts
- Modify the createGallery function in gallery.ts to hide the loading text element on image load
- Move the image element append logic to the parent container in the createGallery function in gallery.ts
* feat: update translations and add new loading translation in i18n files
* chore: remove css source map
* chore: modify build command to ignore css source map
* refactor: remove unnecessary style
* fix: fix desktop cursor text transition bug
* feat: refactor image retrieval logic and improve variable initialization
- Add a new file `layouts/partials/function/getImageSlice.html`
- Initialize variables `$context`, `$Path`, and `$params`
- Set `$Path` based on the result of the `partial/function/currentMenuItem.html` partial
- Retrieve the page `$gallery` based on `$Path`
- Return all resources of type `image` from `$gallery`
* refactor: adapt getImageSlice function to `single.json`
* feat: refactor navigation UI components to use static go template
* feat: update navigation functionality and threshold rendering
* feat: refactor condition for checking `site.Params.bundled`
- Add default condition for checking if `site.Params.bundled` is true or false
* refactor: update info page content
* chore: update site description
* refactor: refactor variable assignments and return statement in menu template
- Change the variable assignment from `.DirName` to `.Identifier` in the file `layouts/_default/single.json`
- Change the variable assignments in the file `layouts/partials/function/currentMenuItem.html`:
- From `$dirName := ""` to `$identifier := ""`
- From `$id := -1` to `$title := ""` and `$weight := -1`
- From `$dirName = .Identifier` to `$identifier = .Identifier`, `$title = .Title`, and `$weight = .Weight`
- Change the return statement in the file `layouts/partials/function/currentMenuItem.html` from `(dict "DirName" $dirName "ID" $id)` to `(dict "Identifier" $identifier "Title" $title "Weight" $weight)`
* feat: update nav links structure for current link styling
- Remove javascript code related to setting current link style and title
- Update nav links to use updated HTML structure for current link styling
* feat: update page titles and meta tags in layout files
- Update the `baseof.html` layout to include the current page title in the `<title>` tag
- Add OpenGraph meta tags for the page title and description in `meta.html` layout
* chore(Geist): bump geist font to v1.0.1
* refactor(_typography.scss): split the CSS lang tag to ensure compatibility with Chromium-based browsers
* refactor(stage.ts): bump up preload count on desktop
* feat(params.toml): add support for user defined resize option
* feat(_fonts.scss): add a new font file to better support fullwidth plus and minus
* refactor(info): update info
* chore(build.yml): update branch name for updating bundled artifacts to include the current date
* chore(package.json): update version from 0.0.1 to v0.0.2 to reflect changes made in the codebase
* feat: refactor initialization process for retrieving and sorting image data
- Modify `main.ts` to use async initialization of resources
- Change the return type of `initResources` function to `Promise<ImageJSON[]>`
- Add try-catch block to handle errors in `initResources` function
- Use fetch API to retrieve image data from `index.json`
- Sort the image data based on the index field
* refactor: update file naming and variable assignments in layouts
- Add new file `exampleSite/config/_default/outputs.toml` with the contents `page = ["HTML", "JSON"]`
- Rename file `layouts/partials/resources/imageJSON.html` to `layouts/_default/single.json`
- Modify variable assignments and references in the `single.json` layou
* chore: remove code that includes imageJSON.html partials in layouts
- Remove the code that includes the "resources/imageJSON.html" partial in the 404.html layout
- Remove the code that includes the "resources/imageJSON.html" partial in the single.html layout
* refactor: add `getElPrev()` and `getElNext()` functions to `hires`
- Add `getElPrev()` and `getElNext()` to the `hires` function call
* refactor: refactor image retrieval for improved accuracy
- Add logging of `c0` variable for debugging
- Change `els.push(imgs[increment(s.index + i, s.length)])` to `els.push(imgs[increment(c0 + i, s.length)])` to retrieve images correctly
- Change `return imgs[increment(s.index, s.length)]` to `return imgs[decrement(c[c.length - 1].i, s.length)]` to retrieve previous element correctly
- Change `return imgs[decrement(s.index, s.length)]` to `return imgs[increment(c[c.length - 1].i, s.length)]` to retrieve next element correctly
* chore(Geist): bump geist font to v1.0.1
* refactor(_typography.scss): split the CSS lang tag to ensure compatibility with Chromium-based browsers
* refactor(stage.ts): bump up preload count on desktop
* feat(params.toml): add support for user defined resize option
* feat(_fonts.scss): add a new font file to better support fullwidth plus and minus
* refactor(info): update info
* chore(build.yml): update branch name for updating bundled artifacts to include the current date
* chore(package.json): update version from 0.0.1 to v0.0.2 to reflect changes made in the codebase
* feat: refactor initialization process for retrieving and sorting image data
- Modify `main.ts` to use async initialization of resources
- Change the return type of `initResources` function to `Promise<ImageJSON[]>`
- Add try-catch block to handle errors in `initResources` function
- Use fetch API to retrieve image data from `index.json`
- Sort the image data based on the index field
* refactor: update file naming and variable assignments in layouts
- Add new file `exampleSite/config/_default/outputs.toml` with the contents `page = ["HTML", "JSON"]`
- Rename file `layouts/partials/resources/imageJSON.html` to `layouts/_default/single.json`
- Modify variable assignments and references in the `single.json` layou
* chore: remove code that includes imageJSON.html partials in layouts
- Remove the code that includes the "resources/imageJSON.html" partial in the 404.html layout
- Remove the code that includes the "resources/imageJSON.html" partial in the single.html layout
* refactor: add `getElPrev()` and `getElNext()` functions to `hires`
- Add `getElPrev()` and `getElNext()` to the `hires` function call
* chore(Geist): bump geist font to v1.0.1
* refactor(_typography.scss): split the CSS lang tag to ensure compatibility with Chromium-based browsers
* refactor(stage.ts): bump up preload count on desktop
* feat(params.toml): add support for user defined resize option
* feat(_fonts.scss): add a new font file to better support fullwidth plus and minus
* refactor(info): update info
* chore(build.yml): update branch name for updating bundled artifacts to include the current date
* chore(package.json): update version from 0.0.1 to v0.0.2 to reflect changes made in the codebase
* feat: refactor initialization process for retrieving and sorting image data
- Modify `main.ts` to use async initialization of resources
- Change the return type of `initResources` function to `Promise<ImageJSON[]>`
- Add try-catch block to handle errors in `initResources` function
- Use fetch API to retrieve image data from `index.json`
- Sort the image data based on the index field
* refactor: update file naming and variable assignments in layouts
- Add new file `exampleSite/config/_default/outputs.toml` with the contents `page = ["HTML", "JSON"]`
- Rename file `layouts/partials/resources/imageJSON.html` to `layouts/_default/single.json`
- Modify variable assignments and references in the `single.json` layou
* chore: remove code that includes imageJSON.html partials in layouts
- Remove the code that includes the "resources/imageJSON.html" partial in the 404.html layout
- Remove the code that includes the "resources/imageJSON.html" partial in the single.html layout
* chore(Geist): bump geist font to v1.0.1
* refactor(_typography.scss): split the CSS lang tag to ensure compatibility with Chromium-based browsers
* refactor(stage.ts): bump up preload count on desktop
* feat(params.toml): add support for user defined resize option
* feat(_fonts.scss): add a new font file to better support fullwidth plus and minus
* refactor(info): update info
* chore(build.yml): update branch name for updating bundled artifacts to include the current date
* chore(package.json): update version from 0.0.1 to v0.0.2 to reflect changes made in the codebase
fix(customCursor.ts): add return type void to onMouse function for clarity
fix(customCursor.ts): add passive option to window event listener for mousemove to improve performance
fix(stageNav.ts): move import statement for setCustomCursor to the top for better organization
fix(stageNav.ts): add return type void to handleClick function for clarity
fix(stageNav.ts): add return type void to handleKey function for clarity
fix(stageNav.ts): add passive option to overlay event listeners for click, keydown, mouseover, and focus to improve performance
fix(stageNav.ts): add passive option to window event listener for keydown to improve performance
fix(stageNav.ts): add return type void to nextImage function for clarity
fix(stageNav.ts): add return type void to prevImage function for clarity
fix(gallery.ts): move import statement for Swiper to the top for better organization
fix(gallery.ts): add return type void to slideUp function for clarity
fix(gallery.ts): add return type void to initGallery function for clarity
fix(gallery.ts): add passive option to window event listener for touchstart to improve performance
fix(gallery.ts): add return type void to changeSlide function for clarity
fix(gallery.ts): add return type void to scrollToActive function for clarity
fix(gallery.ts): add return type void to createGallery function for clarity
fix(gallery.ts): add passive option to close event listeners for click and keydown to improve performance
fix(gallery.ts): add passive option to overlay event listeners for click, keydown, mouseover, and focus to improve performance
fix(gallery.ts): add passive option to window event listener for touchstart to improve performance
fix(nav.ts): add return type void to initNav function for clarity
fix(utils.ts): add return type number to getRandom function for clarity
fix(utils.ts): add return type void to onVisible function for clarity
fix(utils.ts): add return type void to addWatcher function in Watchable class for clarity
refactor(stage.ts): move lores(getElNextFive()) to setPositions() function to ensure images are preloaded before setting positions
refactor(stage.ts): move lores(getElTrail()) to setPositions() function to ensure images are preloaded before setting positions when isOpen is true
refactor(stage.ts): remove redundant lores(imgs) call from minimizeImage() function
refactor(stage.ts): move lores(getElNextFive()) to initStage() function to ensure images are preloaded when stage is initialized
refactor(stage.ts): remove unused e.src assignment in createStage() function
feat(state.ts): add nextFive property to state object to store the next five indices for preload
feat(state.ts): add getNextFive function to calculate the next five indices based on the current index and length
refactor(imageJSON.html): modify image resizing logic to generate separate low resolution and high resolution image URLs, heights, and widths to improve performance and optimize image loading
feat(container.ts): create container module to handle scrollable behavior and add/remove disableScroll class
fix(customCursor.ts): update append target for cursor element to use container instead of main
fix(stage.ts): update append target for stage element to use container instead of main
fix(stageNav.ts): update append target for navOverlay element to use container instead of main
feat(main.ts): initialize container module and conditionally initialize stage and stageNav modules based on device type
fix(nav.ts): update references to state module functions to use state.get() instead of getState()
- Added a new SCSS partial `_collection.scss` to define styles for the collection component.
- Added a new SCSS partial `_gallery.scss` to define styles for the gallery component.
The new partials contain styles for the collection and gallery components, including layout, positioning, and animations.
---
feat: add support for gallery functionality in mobile
- Created a new file `gallery.ts` to handle the gallery functionality in the mobile view.
- Added functions `slideUp()` and `slideDown()` to handle the sliding animation of the gallery.
- Initialized the gallery with the provided image data in the `initGallery()` function.
- Added event listeners to update the active slide and index text when the slide is changed.
- Created a helper function `changeSlide()` to change the active slide in the gallery.
- Created a helper function `scrollToActive()` to scroll to the active image in the collection.
- Created a helper function `updateIndexText()` to update the index text in the navigation.
- Created a helper function `createGallery()` to dynamically create the gallery HTML structure.
---
feat: add scrollable flag for mobile view
- Created a new file `scroll.ts` to handle the scrollable flag for the mobile view.
- Added a `scrollable` variable as a Watchable object to control the scrollability of the view.
---
fix: change port variable case from lowercase `port` to uppercase `PORT` to improve semantics
- Changed the variable name `port` to `PORT` in the `server.ts` file to improve code readability and semantics.
- The variable `PORT` is now used to define the port number for the server to listen on.
feat(customCursor.ts): add support for setting custom text for cursorInner to display different cursor text
fix(stage.ts): fix variable declaration and initialization for imgs, last, cordHist, isOpen, isAnimating, and active to improve code readability and maintainability
feat(stage.ts): add support for minimizing image and initialize stage with image JSON data
fix(stageNav.ts): fix variable declaration and initialization for navItems to improve code readability and maintainability
feat(stageNav.ts): add support for handling click and key events for stage navigation
fix(nav.ts): fix variable declaration and initialization for thresholdDiv and indexDispNums to improve code readability and maintainability
feat(nav.ts): initialize nav and update threshold text