@elmethis/qwik 0.0.23 → 0.0.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2723,7 +2723,7 @@ const styles$6 = {
2723
2723
  };
2724
2724
  const useInView = (props) => {
2725
2725
  const ref = qwik.useSignal();
2726
- const isVisible = qwik.useSignal(false);
2726
+ const isVisible = qwik.useSignal(props?.defaultValue ?? false);
2727
2727
  qwik.useVisibleTask$(() => {
2728
2728
  if (!ref.value) return;
2729
2729
  const observer = new IntersectionObserver(([entry]) => {
@@ -3212,6 +3212,66 @@ const ElmMarkdown = qwik.component$(({ markdown }) => {
3212
3212
  children: elements
3213
3213
  });
3214
3214
  });
3215
+ const useDelayedSignal = (initialValue) => {
3216
+ const signal = qwik.useSignal(initialValue);
3217
+ const delayedSignal = qwik.useSignal(initialValue);
3218
+ const isSignalChanging = qwik.useSignal(false);
3219
+ const dispatch = qwik.$((value, delay) => {
3220
+ isSignalChanging.value = true;
3221
+ signal.value = value;
3222
+ if (delay === void 0 || delay <= 0) {
3223
+ delayedSignal.value = value;
3224
+ isSignalChanging.value = false;
3225
+ } else {
3226
+ const timerId = setTimeout(() => {
3227
+ delayedSignal.value = value;
3228
+ isSignalChanging.value = false;
3229
+ clearTimeout(timerId);
3230
+ }, delay);
3231
+ }
3232
+ });
3233
+ return {
3234
+ signal,
3235
+ delayedSignal,
3236
+ dispatch
3237
+ };
3238
+ };
3239
+ const useLocalStorage = (key, initialValue) => {
3240
+ const state = qwik.useSignal(initialValue);
3241
+ qwik.useVisibleTask$(() => {
3242
+ try {
3243
+ const item = localStorage.getItem(key);
3244
+ if (item !== null) {
3245
+ state.value = JSON.parse(item);
3246
+ }
3247
+ } catch (e) {
3248
+ console.warn(`useLocalStorage: failed to read "${key}"`, e);
3249
+ }
3250
+ }, {
3251
+ strategy: "document-ready"
3252
+ });
3253
+ const set = qwik.$((value) => {
3254
+ try {
3255
+ state.value = value;
3256
+ localStorage.setItem(key, JSON.stringify(value));
3257
+ } catch (e) {
3258
+ console.warn(`useLocalStorage: failed to write "${key}"`, e);
3259
+ }
3260
+ });
3261
+ const remove = qwik.$(() => {
3262
+ try {
3263
+ state.value = initialValue;
3264
+ localStorage.removeItem(key);
3265
+ } catch (e) {
3266
+ console.warn(`useLocalStorage: failed to remove "${key}"`, e);
3267
+ }
3268
+ });
3269
+ return {
3270
+ state,
3271
+ set,
3272
+ remove
3273
+ };
3274
+ };
3215
3275
  exports.ElmBlockFallback = ElmBlockFallback;
3216
3276
  exports.ElmBlockImage = ElmBlockImage;
3217
3277
  exports.ElmBlockQuote = ElmBlockQuote;
@@ -3250,3 +3310,7 @@ exports.ElmTextField = ElmTextField;
3250
3310
  exports.ElmToggle = ElmToggle;
3251
3311
  exports.ElmToggleTheme = ElmToggleTheme;
3252
3312
  exports.ElmValidation = ElmValidation;
3313
+ exports.useDelayedSignal = useDelayedSignal;
3314
+ exports.useElmethisTheme = useElmethisTheme;
3315
+ exports.useInView = useInView;
3316
+ exports.useLocalStorage = useLocalStorage;
@@ -2721,7 +2721,7 @@ const styles$6 = {
2721
2721
  };
2722
2722
  const useInView = (props) => {
2723
2723
  const ref = useSignal();
2724
- const isVisible = useSignal(false);
2724
+ const isVisible = useSignal(props?.defaultValue ?? false);
2725
2725
  useVisibleTask$(() => {
2726
2726
  if (!ref.value) return;
2727
2727
  const observer = new IntersectionObserver(([entry]) => {
@@ -3210,6 +3210,66 @@ const ElmMarkdown = component$(({ markdown }) => {
3210
3210
  children: elements
3211
3211
  });
3212
3212
  });
3213
+ const useDelayedSignal = (initialValue) => {
3214
+ const signal = useSignal(initialValue);
3215
+ const delayedSignal = useSignal(initialValue);
3216
+ const isSignalChanging = useSignal(false);
3217
+ const dispatch = $((value, delay) => {
3218
+ isSignalChanging.value = true;
3219
+ signal.value = value;
3220
+ if (delay === void 0 || delay <= 0) {
3221
+ delayedSignal.value = value;
3222
+ isSignalChanging.value = false;
3223
+ } else {
3224
+ const timerId = setTimeout(() => {
3225
+ delayedSignal.value = value;
3226
+ isSignalChanging.value = false;
3227
+ clearTimeout(timerId);
3228
+ }, delay);
3229
+ }
3230
+ });
3231
+ return {
3232
+ signal,
3233
+ delayedSignal,
3234
+ dispatch
3235
+ };
3236
+ };
3237
+ const useLocalStorage = (key, initialValue) => {
3238
+ const state = useSignal(initialValue);
3239
+ useVisibleTask$(() => {
3240
+ try {
3241
+ const item = localStorage.getItem(key);
3242
+ if (item !== null) {
3243
+ state.value = JSON.parse(item);
3244
+ }
3245
+ } catch (e) {
3246
+ console.warn(`useLocalStorage: failed to read "${key}"`, e);
3247
+ }
3248
+ }, {
3249
+ strategy: "document-ready"
3250
+ });
3251
+ const set = $((value) => {
3252
+ try {
3253
+ state.value = value;
3254
+ localStorage.setItem(key, JSON.stringify(value));
3255
+ } catch (e) {
3256
+ console.warn(`useLocalStorage: failed to write "${key}"`, e);
3257
+ }
3258
+ });
3259
+ const remove = $(() => {
3260
+ try {
3261
+ state.value = initialValue;
3262
+ localStorage.removeItem(key);
3263
+ } catch (e) {
3264
+ console.warn(`useLocalStorage: failed to remove "${key}"`, e);
3265
+ }
3266
+ });
3267
+ return {
3268
+ state,
3269
+ set,
3270
+ remove
3271
+ };
3272
+ };
3213
3273
  export {
3214
3274
  ElmBlockFallback,
3215
3275
  ElmBlockImage,
@@ -3248,5 +3308,9 @@ export {
3248
3308
  ElmTextField,
3249
3309
  ElmToggle,
3250
3310
  ElmToggleTheme,
3251
- ElmValidation
3311
+ ElmValidation,
3312
+ useDelayedSignal,
3313
+ useElmethisTheme,
3314
+ useInView,
3315
+ useLocalStorage
3252
3316
  };
@@ -0,0 +1,6 @@
1
+ import { type QRL } from "@builder.io/qwik";
2
+ export declare const useLocalStorage: <T>(key: string, initialValue: T) => {
3
+ state: import("@builder.io/qwik").Signal<T>;
4
+ set: QRL<(value: T) => void>;
5
+ remove: QRL<() => void>;
6
+ };
@@ -36,3 +36,7 @@ export { ElmTableRow, type ElmTableRowProps, } from "./components/table/elm-tabl
36
36
  export { ElmTableCell, type ElmTableCellProps, } from "./components/table/elm-table-cell";
37
37
  export { ElmJarkup, type ElmJarkupProps } from "./components/others/elm-jarkup";
38
38
  export { ElmMarkdown, type ElmMarkdownProps, } from "./components/others/elm-markdown";
39
+ export { useDelayedSignal } from "./hooks/useDelayedSignal";
40
+ export { useElmethisTheme } from "./hooks/useElmethisTheme";
41
+ export { useInView } from "./hooks/useInView";
42
+ export { useLocalStorage } from "./hooks/useLocalStorage";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elmethis/qwik",
3
- "version": "0.0.23",
3
+ "version": "0.0.24",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -47,7 +47,7 @@
47
47
  "eslint-plugin-qwik": "1.19.1",
48
48
  "globals": "17.4.0",
49
49
  "jarkup-ts": "^0.8.0",
50
- "np": "^8.0.4",
50
+ "np": "^11.0.2",
51
51
  "prettier": "3.6.2",
52
52
  "sass": "^1.97.3",
53
53
  "storybook": "8",