forked from trent_larson/crowd-funder-for-time-pwa
fix(ui): resolve duplicate attributes and improve code style
- Remove duplicate class attributes in ProjectsView and ClaimView - Fix attribute ordering for better readability - Replace this references with direct variable names in templates - Update icon-size prop to use kebab-case - Remove unnecessary comments and improve formatting - Fix import organization in ProjectsView This commit resolves Vue template errors and improves code consistency.
This commit is contained in:
436
package-lock.json
generated
436
package-lock.json
generated
@@ -2602,9 +2602,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@capacitor/android": {
|
||||
"version": "6.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@capacitor/android/-/android-6.2.0.tgz",
|
||||
"integrity": "sha512-3YIDPylV0Q2adEQ/H568p496QdYG0jK/XGMdx7OGSqdBZen92ciAsYdyhLtyl91UVsN1lBhDi5H6j3T2KS6aJg==",
|
||||
"version": "6.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@capacitor/android/-/android-6.2.1.tgz",
|
||||
"integrity": "sha512-8gd4CIiQO5LAIlPIfd5mCuodBRxMMdZZEdj8qG8m+dQ1sQ2xyemVpzHmRK8qSCHorsBUCg3D62j2cp6bEBAkdw==",
|
||||
"license": "MIT",
|
||||
"peerDependencies": {
|
||||
"@capacitor/core": "^6.2.0"
|
||||
@@ -2769,9 +2769,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@capacitor/cli": {
|
||||
"version": "6.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@capacitor/cli/-/cli-6.2.0.tgz",
|
||||
"integrity": "sha512-EWcXG39mZh35zrHhOqzN1ILeSyMRyEqWVtQDXqMGjCXYRH6b6p5TvyvLDN8ZNy26tbhI3i79gfrgirt+mNwuuw==",
|
||||
"version": "6.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@capacitor/cli/-/cli-6.2.1.tgz",
|
||||
"integrity": "sha512-JKl0FpFge8PgQNInw12kcKieQ4BmOyazQ4JGJOfEpVXlgrX1yPhSZTPjngupzTCiK3I7q7iGG5kjun0fDqgSCA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@ionic/cli-framework-output": "^2.2.5",
|
||||
@@ -2870,18 +2870,18 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@capacitor/core": {
|
||||
"version": "6.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@capacitor/core/-/core-6.2.0.tgz",
|
||||
"integrity": "sha512-B9IlJtDpUqhhYb+T8+cp2Db/3RETX36STgjeU2kQZBs/SLAcFiMama227o+msRjLeo3DO+7HJjWVA1+XlyyPEg==",
|
||||
"version": "6.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@capacitor/core/-/core-6.2.1.tgz",
|
||||
"integrity": "sha512-urZwxa7hVE/BnA18oCFAdizXPse6fCKanQyEqpmz6cBJ2vObwMpyJDG5jBeoSsgocS9+Ax+9vb4ducWJn0y2qQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"tslib": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@capacitor/ios": {
|
||||
"version": "6.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@capacitor/ios/-/ios-6.2.0.tgz",
|
||||
"integrity": "sha512-gisvZBIrKT1siiumgpLPY63HmJe69Ed/dOmfQQ+U1MIJmOR5gWGWvfO7QSj/FMatVZS4Xt/8jCoUgzDD1U6kSw==",
|
||||
"version": "6.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@capacitor/ios/-/ios-6.2.1.tgz",
|
||||
"integrity": "sha512-tbMlQdQjxe1wyaBvYVU1yTojKJjgluZQsJkALuJxv/6F8QTw5b6vd7X785O/O7cMpIAZfUWo/vtAHzFkRV+kXw==",
|
||||
"license": "MIT",
|
||||
"peerDependencies": {
|
||||
"@capacitor/core": "^6.2.0"
|
||||
@@ -3826,9 +3826,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@electron/asar": {
|
||||
"version": "3.3.1",
|
||||
"resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.3.1.tgz",
|
||||
"integrity": "sha512-WtpC/+34p0skWZiarRjLAyqaAX78DofhDxnREy/V5XHfu1XEXbFCSSMcDQ6hNCPJFaPy8/NnUgYuf9uiCkvKPg==",
|
||||
"version": "3.4.0",
|
||||
"resolved": "https://registry.npmjs.org/@electron/asar/-/asar-3.4.0.tgz",
|
||||
"integrity": "sha512-8ZAmXjsQ17wJxdv4755hZ1Xiw85dwETlWYQwl+imww18CaEK4bxPvAotJEfIZGbRMrNEJOTMyuVQD+yDY03N5Q==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -5181,9 +5181,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@expo/cli": {
|
||||
"version": "0.22.22",
|
||||
"resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.22.22.tgz",
|
||||
"integrity": "sha512-sOttVuk/8gdnsiSeDpnRNpLgBJHLbyQQC0QBGd2iHpr/x6xSYpgoRO6AqwAwGtQsk4ZEPZ83ulvccei1IIPdwg==",
|
||||
"version": "0.22.23",
|
||||
"resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.22.23.tgz",
|
||||
"integrity": "sha512-LXFKu2jnk9ClVD+kw0sJCQ89zei01wz2t4EJwc9P7EwYb8gabC8FtPyM/X7NIE5jtrnTLTUtjW5ovxQSBL7pJQ==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"peer": true,
|
||||
@@ -5201,12 +5201,12 @@
|
||||
"@expo/osascript": "^2.1.6",
|
||||
"@expo/package-manager": "^1.7.2",
|
||||
"@expo/plist": "^0.2.2",
|
||||
"@expo/prebuild-config": "^8.0.29",
|
||||
"@expo/prebuild-config": "^8.0.30",
|
||||
"@expo/rudder-sdk-node": "^1.1.1",
|
||||
"@expo/spawn-async": "^1.7.2",
|
||||
"@expo/ws-tunnel": "^1.0.1",
|
||||
"@expo/xcpretty": "^4.3.0",
|
||||
"@react-native/dev-middleware": "0.76.7",
|
||||
"@react-native/dev-middleware": "0.76.8",
|
||||
"@urql/core": "^5.0.6",
|
||||
"@urql/exchange-retry": "^1.3.0",
|
||||
"accepts": "^1.3.8",
|
||||
@@ -6602,9 +6602,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@expo/prebuild-config": {
|
||||
"version": "8.0.29",
|
||||
"resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-8.0.29.tgz",
|
||||
"integrity": "sha512-CoZBxUQLZpGwbnPREr2sFnObOn4j+Mp7AHxX6Rz5jhSSz2VifC1jMM4NFiXrZe6LZyjYNqBGRe3D8bAqdpVGkg==",
|
||||
"version": "8.0.30",
|
||||
"resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-8.0.30.tgz",
|
||||
"integrity": "sha512-xNHWGh0xLZjxBXwVbDW+TPeexuQ95FZX2ZRrzJkALxhQiwYQswQSFE7CVUFMC2USIKVklCcgfEvtqnguTBQVxQ==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"peer": true,
|
||||
@@ -6614,7 +6614,7 @@
|
||||
"@expo/config-types": "^52.0.5",
|
||||
"@expo/image-utils": "^0.6.5",
|
||||
"@expo/json-file": "^9.0.2",
|
||||
"@react-native/normalize-colors": "0.76.7",
|
||||
"@react-native/normalize-colors": "0.76.8",
|
||||
"debug": "^4.3.1",
|
||||
"fs-extra": "^9.0.0",
|
||||
"resolve-from": "^5.0.0",
|
||||
@@ -7999,9 +7999,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@react-native/assets-registry": {
|
||||
"version": "0.78.1",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.78.1.tgz",
|
||||
"integrity": "sha512-SegfYQFuut05EQIQIVB/6QMGaxJ29jEtPmzFWJdIp/yc2mmhIq7MfWRjwOe6qbONzIdp6Ca8p835hiGiAGyeKQ==",
|
||||
"version": "0.78.2",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.78.2.tgz",
|
||||
"integrity": "sha512-VHqQqjj1rnh2KQeS3yx4IfFSxIIIDi1jR4yUeC438Q6srwxDohR4W0UkXuSIz0imhlems5eS7yZTjdgSpWHRUQ==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"peer": true,
|
||||
@@ -8010,23 +8010,23 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@react-native/babel-plugin-codegen": {
|
||||
"version": "0.76.7",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.76.7.tgz",
|
||||
"integrity": "sha512-+8H4DXJREM4l/pwLF/wSVMRzVhzhGDix5jLezNrMD9J1U1AMfV2aSkWA1XuqR7pjPs/Vqf6TaPL7vJMZ4LU05Q==",
|
||||
"version": "0.76.8",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.76.8.tgz",
|
||||
"integrity": "sha512-84RUEhDZS+q7vPtxKi0iMZLd5/W0VN7NOyqX5f+burV3xMYpUhpF5TDJ2Ysol7dJrvEZHm6ISAriO85++V8YDw==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@react-native/codegen": "0.76.7"
|
||||
"@react-native/codegen": "0.76.8"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@react-native/babel-preset": {
|
||||
"version": "0.76.7",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.76.7.tgz",
|
||||
"integrity": "sha512-/c5DYZ6y8tyg+g8tgXKndDT7mWnGmkZ9F+T3qNDfoE3Qh7ucrNeC2XWvU9h5pk8eRtj9l4SzF4aO1phzwoibyg==",
|
||||
"version": "0.76.8",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.76.8.tgz",
|
||||
"integrity": "sha512-xrP+r3orRzzxtC2TrfGIP6IYi1f4AiWlnSiWf4zxEdMFzKrYdmxhD0FPtAZb77B0DqFIW5AcBFlm4grfL/VgfA==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"peer": true,
|
||||
@@ -8072,7 +8072,7 @@
|
||||
"@babel/plugin-transform-typescript": "^7.25.2",
|
||||
"@babel/plugin-transform-unicode-regex": "^7.24.7",
|
||||
"@babel/template": "^7.25.0",
|
||||
"@react-native/babel-plugin-codegen": "0.76.7",
|
||||
"@react-native/babel-plugin-codegen": "0.76.8",
|
||||
"babel-plugin-syntax-hermes-parser": "^0.25.1",
|
||||
"babel-plugin-transform-flow-enums": "^0.0.2",
|
||||
"react-refresh": "^0.14.0"
|
||||
@@ -8085,9 +8085,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@react-native/codegen": {
|
||||
"version": "0.76.7",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.76.7.tgz",
|
||||
"integrity": "sha512-FAn585Ll65YvkSrKDyAcsdjHhhAGiMlSTUpHh0x7J5ntudUns+voYms0xMP+pEPt0XuLdjhD7zLIIlAWP407+g==",
|
||||
"version": "0.76.8",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.76.8.tgz",
|
||||
"integrity": "sha512-qvKhcYBkRHJFkeWrYm66kEomQOTVXWiHBkZ8VF9oC/71OJkLszpTpVOuPIyyib6fqhjy9l7mHYGYenSpfYI5Ww==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"peer": true,
|
||||
@@ -8109,21 +8109,21 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@react-native/community-cli-plugin": {
|
||||
"version": "0.78.1",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.78.1.tgz",
|
||||
"integrity": "sha512-S6vF4oWpFqThpt/dBLrqLQw5ED2M1kg5mVtiL6ZqpoYIg+/e0vg7LZ8EXNbcdMDH4obRnm2xbOd+qlC7mOzNBg==",
|
||||
"version": "0.78.2",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.78.2.tgz",
|
||||
"integrity": "sha512-xqEnpqxvBlm02mRY58L0NBjF25MTHmbaeA2qBx5VtheH/pXL6MHUbtwB1Q2dJrg9XcK0Np1i9h7N5h9gFwA2Mg==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@react-native/dev-middleware": "0.78.1",
|
||||
"@react-native/metro-babel-transformer": "0.78.1",
|
||||
"@react-native/dev-middleware": "0.78.2",
|
||||
"@react-native/metro-babel-transformer": "0.78.2",
|
||||
"chalk": "^4.0.0",
|
||||
"debug": "^2.2.0",
|
||||
"invariant": "^2.2.4",
|
||||
"metro": "^0.81.0",
|
||||
"metro-config": "^0.81.0",
|
||||
"metro-core": "^0.81.0",
|
||||
"metro": "^0.81.3",
|
||||
"metro-config": "^0.81.3",
|
||||
"metro-core": "^0.81.3",
|
||||
"readline": "^1.3.0",
|
||||
"semver": "^7.1.3"
|
||||
},
|
||||
@@ -8140,9 +8140,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@react-native/community-cli-plugin/node_modules/@react-native/debugger-frontend": {
|
||||
"version": "0.78.1",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.78.1.tgz",
|
||||
"integrity": "sha512-xev/B++QLxSDpEBWsc74GyCuq9XOHYTBwcGSpsuhOJDUha6WZIbEEvZe3LpVW+OiFso4oGIdnVSQntwippZdWw==",
|
||||
"version": "0.78.2",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.78.2.tgz",
|
||||
"integrity": "sha512-qNJT679OU/cdAKmZxfBFjqTG+ZC5i/4sLyvbcQjFFypunGSOaWl3mMQFQQdCBIQN+DFDPVSUXTPZQK1uI2j/ow==",
|
||||
"license": "BSD-3-Clause",
|
||||
"optional": true,
|
||||
"peer": true,
|
||||
@@ -8151,15 +8151,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@react-native/community-cli-plugin/node_modules/@react-native/dev-middleware": {
|
||||
"version": "0.78.1",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.78.1.tgz",
|
||||
"integrity": "sha512-l8p7/dXa1vWPOdj0iuACkex8lgbLpYyPZ3QXGkocMcpl0bQ24K7hf3Bj02tfptP5PAm16b2RuEi04sjIGHUzzg==",
|
||||
"version": "0.78.2",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.78.2.tgz",
|
||||
"integrity": "sha512-/u0pGiWVgvx09cYNO4/Okj8v1ZNt4K941pQJPhdwg5AHYuggVHNJjROukXJzZiElYFcJhMfOuxwksiIyx/GAkA==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@isaacs/ttlcache": "^1.4.1",
|
||||
"@react-native/debugger-frontend": "0.78.1",
|
||||
"@react-native/debugger-frontend": "0.78.2",
|
||||
"chrome-launcher": "^0.15.2",
|
||||
"chromium-edge-launcher": "^0.2.0",
|
||||
"connect": "^3.6.5",
|
||||
@@ -8224,9 +8224,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@react-native/debugger-frontend": {
|
||||
"version": "0.76.7",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.76.7.tgz",
|
||||
"integrity": "sha512-89ZtZXt7ZxE94i7T94qzZMhp4Gfcpr/QVpGqEaejAxZD+gvDCH21cYSF+/Rz2ttBazm0rk5MZ0mFqb0Iqp1jmw==",
|
||||
"version": "0.76.8",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.76.8.tgz",
|
||||
"integrity": "sha512-kSukBw2C++5ENLUCAp/1uEeiFgiHi/MBa71Wgym3UD5qwu2vOSPOTSKRX7q2Jb676MUzTcrIaJBZ/r2qk25u7Q==",
|
||||
"license": "BSD-3-Clause",
|
||||
"optional": true,
|
||||
"peer": true,
|
||||
@@ -8235,15 +8235,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@react-native/dev-middleware": {
|
||||
"version": "0.76.7",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.76.7.tgz",
|
||||
"integrity": "sha512-Jsw8g9DyLPnR9yHEGuT09yHZ7M88/GL9CtU9WmyChlBwdXSeE3AmRqLegsV3XcgULQ1fqdemokaOZ/MwLYkjdA==",
|
||||
"version": "0.76.8",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.76.8.tgz",
|
||||
"integrity": "sha512-KYx7hFME2uYQRCDCqb19ghw51TAdh48PZ5EMpoU2kPA1SKKO9c1bUbpsKRhVZ0bv1QqEX6fjox3c4/WYRozHQA==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@isaacs/ttlcache": "^1.4.1",
|
||||
"@react-native/debugger-frontend": "0.76.7",
|
||||
"@react-native/debugger-frontend": "0.76.8",
|
||||
"chrome-launcher": "^0.15.2",
|
||||
"chromium-edge-launcher": "^0.2.0",
|
||||
"connect": "^3.6.5",
|
||||
@@ -8308,9 +8308,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@react-native/gradle-plugin": {
|
||||
"version": "0.78.1",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.78.1.tgz",
|
||||
"integrity": "sha512-v8GJU+8DzQDWO3iuTFI1nbuQ/kzuqbXv07VVtSIMLbdofHzuuQT14DGBacBkrIDKBDTVaBGAc/baDNsyxCghng==",
|
||||
"version": "0.78.2",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.78.2.tgz",
|
||||
"integrity": "sha512-LHgmdrbyK9fcBDdxtn2GLOoDAE+aFHtDHgu6vUZ5CSCi9CMd5Krq8IWAmWjeq+BQr+D1rwSXDAHtOrfJ6qOolA==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"peer": true,
|
||||
@@ -8319,9 +8319,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@react-native/js-polyfills": {
|
||||
"version": "0.78.1",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.78.1.tgz",
|
||||
"integrity": "sha512-Ogcv4QOA1o3IyErrf/i4cDnP+nfNcIfGTgw6iNQyAPry1xjPOz4ziajskLpWG/3ADeneIZuyZppKB4A28rZSvg==",
|
||||
"version": "0.78.2",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.78.2.tgz",
|
||||
"integrity": "sha512-b7eCPAs3uogdDeTvOTrU6i8DTTsHyjyp48R5pVakJIREhEx+SkUnlVk11PYjbCKGYjYgN939Tb5b1QWNtdrPIQ==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"peer": true,
|
||||
@@ -8330,15 +8330,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@react-native/metro-babel-transformer": {
|
||||
"version": "0.78.1",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.78.1.tgz",
|
||||
"integrity": "sha512-jQWf69D+QTMvSZSWLR+cr3VUF16rGB6sbD+bItD8Czdfn3hajzfMoHJTkVFP7991cjK5sIVekNiQIObou8JSQw==",
|
||||
"version": "0.78.2",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.78.2.tgz",
|
||||
"integrity": "sha512-H4614LjcbrG+lUtg+ysMX5RnovY8AwrWj4rH8re6ErfhPFwLQXV0LIrl/fgFpq07Vjc5e3ZXzuKuMJF6l7eeTQ==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/core": "^7.25.2",
|
||||
"@react-native/babel-preset": "0.78.1",
|
||||
"@react-native/babel-preset": "0.78.2",
|
||||
"hermes-parser": "0.25.1",
|
||||
"nullthrows": "^1.1.1"
|
||||
},
|
||||
@@ -8350,24 +8350,24 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@react-native/metro-babel-transformer/node_modules/@react-native/babel-plugin-codegen": {
|
||||
"version": "0.78.1",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.78.1.tgz",
|
||||
"integrity": "sha512-rD0tnct/yPEtoOc8eeFHIf8ZJJJEzLkmqLs8HZWSkt3w9VYWngqLXZxiDGqv0ngXjunAlC/Hpq+ULMVOvOnByw==",
|
||||
"version": "0.78.2",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.78.2.tgz",
|
||||
"integrity": "sha512-0MnQOhIaOdWbQ3Dx3dz0MBbG+1ggBiyUL+Y+xHAeSDSaiRATT8DIsrSloeJU0A+2p5TxF8ITJyJ6KEQkMyB/Zw==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/traverse": "^7.25.3",
|
||||
"@react-native/codegen": "0.78.1"
|
||||
"@react-native/codegen": "0.78.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@react-native/metro-babel-transformer/node_modules/@react-native/babel-preset": {
|
||||
"version": "0.78.1",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.78.1.tgz",
|
||||
"integrity": "sha512-yTVcHmEdNQH4Ju7lhvbiQaGxBpMcalgkBy/IvHowXKk/ex3nY1PolF16/mBG1BrefcUA/rtJpqTtk2Ii+7T/Lw==",
|
||||
"version": "0.78.2",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.78.2.tgz",
|
||||
"integrity": "sha512-VGOLhztQY/0vktMXrBr01HUN/iBSdkKBRiiZYfrLqx9fB2ql55gZb/6X9lzItjVyYoOc2jyHXSX8yoSfDcWDZg==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"peer": true,
|
||||
@@ -8413,7 +8413,7 @@
|
||||
"@babel/plugin-transform-typescript": "^7.25.2",
|
||||
"@babel/plugin-transform-unicode-regex": "^7.24.7",
|
||||
"@babel/template": "^7.25.0",
|
||||
"@react-native/babel-plugin-codegen": "0.78.1",
|
||||
"@react-native/babel-plugin-codegen": "0.78.2",
|
||||
"babel-plugin-syntax-hermes-parser": "0.25.1",
|
||||
"babel-plugin-transform-flow-enums": "^0.0.2",
|
||||
"react-refresh": "^0.14.0"
|
||||
@@ -8426,9 +8426,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@react-native/metro-babel-transformer/node_modules/@react-native/codegen": {
|
||||
"version": "0.78.1",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.78.1.tgz",
|
||||
"integrity": "sha512-kGG5qAM9JdFtxzUwe7c6CyJbsU2PnaTrtCHA2dF8VEiNX1K3yd9yKPzfkxA7HPvmHoAn3ga1941O79BStWcM3A==",
|
||||
"version": "0.78.2",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.78.2.tgz",
|
||||
"integrity": "sha512-4r3/W1h22/GAmAMuMRMJWsw/9JGUEDAnSbYNya7zID1XSvizLoA5Yn8Qv+phrRwwsl0eZLxOqONh/nzXJcvpyg==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"peer": true,
|
||||
@@ -8571,17 +8571,17 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@react-native/normalize-colors": {
|
||||
"version": "0.76.7",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.76.7.tgz",
|
||||
"integrity": "sha512-ST1xxBuYVIXPdD81dR6+tzIgso7m3pa9+6rOBXTh5Xm7KEEFik7tnQX+GydXYMp3wr1gagJjragdXkPnxK6WNg==",
|
||||
"version": "0.76.8",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.76.8.tgz",
|
||||
"integrity": "sha512-FRjRvs7RgsXjkbGSOjYSxhX5V70c0IzA/jy3HXeYpATMwD9fOR1DbveLW497QGsVdCa0vThbJUtR8rIzAfpHQA==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/@react-native/virtualized-lists": {
|
||||
"version": "0.78.1",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.78.1.tgz",
|
||||
"integrity": "sha512-v0jqDNMFXpnRnSlkDVvwNxXgPhifzzTFlxTSnHj9erKJsKpE26gSU5qB4hmJkEsscLG/ygdJ1c88aqinSh/wRA==",
|
||||
"version": "0.78.2",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.78.2.tgz",
|
||||
"integrity": "sha512-y/wVRUz1ImR2hKKUXFroTdSBiL0Dd+oudzqcGKp/M8Ybrw9MQ0m2QCXxtyONtDn8qkEGceqllwTCKq5WQwJcew==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"peer": true,
|
||||
@@ -8688,9 +8688,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@rollup/rollup-android-arm-eabi": {
|
||||
"version": "4.38.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.38.0.tgz",
|
||||
"integrity": "sha512-ldomqc4/jDZu/xpYU+aRxo3V4mGCV9HeTgUBANI3oIQMOL+SsxB+S2lxMpkFp5UamSS3XuTMQVbsS24R4J4Qjg==",
|
||||
"version": "4.39.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.39.0.tgz",
|
||||
"integrity": "sha512-lGVys55Qb00Wvh8DMAocp5kIcaNzEFTmGhfFd88LfaogYTRKrdxgtlO5H6S49v2Nd8R2C6wLOal0qv6/kCkOwA==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
@@ -8702,9 +8702,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-android-arm64": {
|
||||
"version": "4.38.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.38.0.tgz",
|
||||
"integrity": "sha512-VUsgcy4GhhT7rokwzYQP+aV9XnSLkkhlEJ0St8pbasuWO/vwphhZQxYEKUP3ayeCYLhk6gEtacRpYP/cj3GjyQ==",
|
||||
"version": "4.39.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.39.0.tgz",
|
||||
"integrity": "sha512-It9+M1zE31KWfqh/0cJLrrsCPiF72PoJjIChLX+rEcujVRCb4NLQ5QzFkzIZW8Kn8FTbvGQBY5TkKBau3S8cCQ==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -8716,9 +8716,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-darwin-arm64": {
|
||||
"version": "4.38.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.38.0.tgz",
|
||||
"integrity": "sha512-buA17AYXlW9Rn091sWMq1xGUvWQFOH4N1rqUxGJtEQzhChxWjldGCCup7r/wUnaI6Au8sKXpoh0xg58a7cgcpg==",
|
||||
"version": "4.39.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.39.0.tgz",
|
||||
"integrity": "sha512-lXQnhpFDOKDXiGxsU9/l8UEGGM65comrQuZ+lDcGUx+9YQ9dKpF3rSEGepyeR5AHZ0b5RgiligsBhWZfSSQh8Q==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -8730,9 +8730,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-darwin-x64": {
|
||||
"version": "4.38.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.38.0.tgz",
|
||||
"integrity": "sha512-Mgcmc78AjunP1SKXl624vVBOF2bzwNWFPMP4fpOu05vS0amnLcX8gHIge7q/lDAHy3T2HeR0TqrriZDQS2Woeg==",
|
||||
"version": "4.39.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.39.0.tgz",
|
||||
"integrity": "sha512-mKXpNZLvtEbgu6WCkNij7CGycdw9cJi2k9v0noMb++Vab12GZjFgUXD69ilAbBh034Zwn95c2PNSz9xM7KYEAQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -8744,9 +8744,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-freebsd-arm64": {
|
||||
"version": "4.38.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.38.0.tgz",
|
||||
"integrity": "sha512-zzJACgjLbQTsscxWqvrEQAEh28hqhebpRz5q/uUd1T7VTwUNZ4VIXQt5hE7ncs0GrF+s7d3S4on4TiXUY8KoQA==",
|
||||
"version": "4.39.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.39.0.tgz",
|
||||
"integrity": "sha512-jivRRlh2Lod/KvDZx2zUR+I4iBfHcu2V/BA2vasUtdtTN2Uk3jfcZczLa81ESHZHPHy4ih3T/W5rPFZ/hX7RtQ==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -8758,9 +8758,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-freebsd-x64": {
|
||||
"version": "4.38.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.38.0.tgz",
|
||||
"integrity": "sha512-hCY/KAeYMCyDpEE4pTETam0XZS4/5GXzlLgpi5f0IaPExw9kuB+PDTOTLuPtM10TlRG0U9OSmXJ+Wq9J39LvAg==",
|
||||
"version": "4.39.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.39.0.tgz",
|
||||
"integrity": "sha512-8RXIWvYIRK9nO+bhVz8DwLBepcptw633gv/QT4015CpJ0Ht8punmoHU/DuEd3iw9Hr8UwUV+t+VNNuZIWYeY7Q==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -8772,9 +8772,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
|
||||
"version": "4.38.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.38.0.tgz",
|
||||
"integrity": "sha512-mimPH43mHl4JdOTD7bUMFhBdrg6f9HzMTOEnzRmXbOZqjijCw8LA5z8uL6LCjxSa67H2xiLFvvO67PT05PRKGg==",
|
||||
"version": "4.39.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.39.0.tgz",
|
||||
"integrity": "sha512-mz5POx5Zu58f2xAG5RaRRhp3IZDK7zXGk5sdEDj4o96HeaXhlUwmLFzNlc4hCQi5sGdR12VDgEUqVSHer0lI9g==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
@@ -8786,9 +8786,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
|
||||
"version": "4.38.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.38.0.tgz",
|
||||
"integrity": "sha512-tPiJtiOoNuIH8XGG8sWoMMkAMm98PUwlriOFCCbZGc9WCax+GLeVRhmaxjJtz6WxrPKACgrwoZ5ia/uapq3ZVg==",
|
||||
"version": "4.39.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.39.0.tgz",
|
||||
"integrity": "sha512-+YDwhM6gUAyakl0CD+bMFpdmwIoRDzZYaTWV3SDRBGkMU/VpIBYXXEvkEcTagw/7VVkL2vA29zU4UVy1mP0/Yw==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
@@ -8800,9 +8800,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-arm64-gnu": {
|
||||
"version": "4.38.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.38.0.tgz",
|
||||
"integrity": "sha512-wZco59rIVuB0tjQS0CSHTTUcEde+pXQWugZVxWaQFdQQ1VYub/sTrNdY76D1MKdN2NB48JDuGABP6o6fqos8mA==",
|
||||
"version": "4.39.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.39.0.tgz",
|
||||
"integrity": "sha512-EKf7iF7aK36eEChvlgxGnk7pdJfzfQbNvGV/+l98iiMwU23MwvmV0Ty3pJ0p5WQfm3JRHOytSIqD9LB7Bq7xdQ==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -8814,9 +8814,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-arm64-musl": {
|
||||
"version": "4.38.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.38.0.tgz",
|
||||
"integrity": "sha512-fQgqwKmW0REM4LomQ+87PP8w8xvU9LZfeLBKybeli+0yHT7VKILINzFEuggvnV9M3x1Ed4gUBmGUzCo/ikmFbQ==",
|
||||
"version": "4.39.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.39.0.tgz",
|
||||
"integrity": "sha512-vYanR6MtqC7Z2SNr8gzVnzUul09Wi1kZqJaek3KcIlI/wq5Xtq4ZPIZ0Mr/st/sv/NnaPwy/D4yXg5x0B3aUUA==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -8828,9 +8828,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-loongarch64-gnu": {
|
||||
"version": "4.38.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.38.0.tgz",
|
||||
"integrity": "sha512-hz5oqQLXTB3SbXpfkKHKXLdIp02/w3M+ajp8p4yWOWwQRtHWiEOCKtc9U+YXahrwdk+3qHdFMDWR5k+4dIlddg==",
|
||||
"version": "4.39.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.39.0.tgz",
|
||||
"integrity": "sha512-NMRUT40+h0FBa5fb+cpxtZoGAggRem16ocVKIv5gDB5uLDgBIwrIsXlGqYbLwW8YyO3WVTk1FkFDjMETYlDqiw==",
|
||||
"cpu": [
|
||||
"loong64"
|
||||
],
|
||||
@@ -8842,9 +8842,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
|
||||
"version": "4.38.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.38.0.tgz",
|
||||
"integrity": "sha512-NXqygK/dTSibQ+0pzxsL3r4Xl8oPqVoWbZV9niqOnIHV/J92fe65pOir0xjkUZDRSPyFRvu+4YOpJF9BZHQImw==",
|
||||
"version": "4.39.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.39.0.tgz",
|
||||
"integrity": "sha512-0pCNnmxgduJ3YRt+D+kJ6Ai/r+TaePu9ZLENl+ZDV/CdVczXl95CbIiwwswu4L+K7uOIGf6tMo2vm8uadRaICQ==",
|
||||
"cpu": [
|
||||
"ppc64"
|
||||
],
|
||||
@@ -8856,9 +8856,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
|
||||
"version": "4.38.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.38.0.tgz",
|
||||
"integrity": "sha512-GEAIabR1uFyvf/jW/5jfu8gjM06/4kZ1W+j1nWTSSB3w6moZEBm7iBtzwQ3a1Pxos2F7Gz+58aVEnZHU295QTg==",
|
||||
"version": "4.39.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.39.0.tgz",
|
||||
"integrity": "sha512-t7j5Zhr7S4bBtksT73bO6c3Qa2AV/HqiGlj9+KB3gNF5upcVkx+HLgxTm8DK4OkzsOYqbdqbLKwvGMhylJCPhQ==",
|
||||
"cpu": [
|
||||
"riscv64"
|
||||
],
|
||||
@@ -8870,9 +8870,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-riscv64-musl": {
|
||||
"version": "4.38.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.38.0.tgz",
|
||||
"integrity": "sha512-9EYTX+Gus2EGPbfs+fh7l95wVADtSQyYw4DfSBcYdUEAmP2lqSZY0Y17yX/3m5VKGGJ4UmIH5LHLkMJft3bYoA==",
|
||||
"version": "4.39.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.39.0.tgz",
|
||||
"integrity": "sha512-m6cwI86IvQ7M93MQ2RF5SP8tUjD39Y7rjb1qjHgYh28uAPVU8+k/xYWvxRO3/tBN2pZkSMa5RjnPuUIbrwVxeA==",
|
||||
"cpu": [
|
||||
"riscv64"
|
||||
],
|
||||
@@ -8884,9 +8884,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-s390x-gnu": {
|
||||
"version": "4.38.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.38.0.tgz",
|
||||
"integrity": "sha512-Mpp6+Z5VhB9VDk7RwZXoG2qMdERm3Jw07RNlXHE0bOnEeX+l7Fy4bg+NxfyN15ruuY3/7Vrbpm75J9QHFqj5+Q==",
|
||||
"version": "4.39.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.39.0.tgz",
|
||||
"integrity": "sha512-iRDJd2ebMunnk2rsSBYlsptCyuINvxUfGwOUldjv5M4tpa93K8tFMeYGpNk2+Nxl+OBJnBzy2/JCscGeO507kA==",
|
||||
"cpu": [
|
||||
"s390x"
|
||||
],
|
||||
@@ -8898,9 +8898,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-x64-gnu": {
|
||||
"version": "4.38.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.38.0.tgz",
|
||||
"integrity": "sha512-vPvNgFlZRAgO7rwncMeE0+8c4Hmc+qixnp00/Uv3ht2x7KYrJ6ERVd3/R0nUtlE6/hu7/HiiNHJ/rP6knRFt1w==",
|
||||
"version": "4.39.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.39.0.tgz",
|
||||
"integrity": "sha512-t9jqYw27R6Lx0XKfEFe5vUeEJ5pF3SGIM6gTfONSMb7DuG6z6wfj2yjcoZxHg129veTqU7+wOhY6GX8wmf90dA==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -8912,9 +8912,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-linux-x64-musl": {
|
||||
"version": "4.38.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.38.0.tgz",
|
||||
"integrity": "sha512-q5Zv+goWvQUGCaL7fU8NuTw8aydIL/C9abAVGCzRReuj5h30TPx4LumBtAidrVOtXnlB+RZkBtExMsfqkMfb8g==",
|
||||
"version": "4.39.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.39.0.tgz",
|
||||
"integrity": "sha512-ThFdkrFDP55AIsIZDKSBWEt/JcWlCzydbZHinZ0F/r1h83qbGeenCt/G/wG2O0reuENDD2tawfAj2s8VK7Bugg==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -8926,9 +8926,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-win32-arm64-msvc": {
|
||||
"version": "4.38.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.38.0.tgz",
|
||||
"integrity": "sha512-u/Jbm1BU89Vftqyqbmxdq14nBaQjQX1HhmsdBWqSdGClNaKwhjsg5TpW+5Ibs1mb8Es9wJiMdl86BcmtUVXNZg==",
|
||||
"version": "4.39.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.39.0.tgz",
|
||||
"integrity": "sha512-jDrLm6yUtbOg2TYB3sBF3acUnAwsIksEYjLeHL+TJv9jg+TmTwdyjnDex27jqEMakNKf3RwwPahDIt7QXCSqRQ==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -8940,9 +8940,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-win32-ia32-msvc": {
|
||||
"version": "4.38.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.38.0.tgz",
|
||||
"integrity": "sha512-mqu4PzTrlpNHHbu5qleGvXJoGgHpChBlrBx/mEhTPpnAL1ZAYFlvHD7rLK839LLKQzqEQMFJfGrrOHItN4ZQqA==",
|
||||
"version": "4.39.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.39.0.tgz",
|
||||
"integrity": "sha512-6w9uMuza+LbLCVoNKL5FSLE7yvYkq9laSd09bwS0tMjkwXrmib/4KmoJcrKhLWHvw19mwU+33ndC69T7weNNjQ==",
|
||||
"cpu": [
|
||||
"ia32"
|
||||
],
|
||||
@@ -8954,9 +8954,9 @@
|
||||
]
|
||||
},
|
||||
"node_modules/@rollup/rollup-win32-x64-msvc": {
|
||||
"version": "4.38.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.38.0.tgz",
|
||||
"integrity": "sha512-jjqy3uWlecfB98Psxb5cD6Fny9Fupv9LrDSPTQZUROqjvZmcCqNu4UMl7qqhlUUGpwiAkotj6GYu4SZdcr/nLw==",
|
||||
"version": "4.39.0",
|
||||
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.39.0.tgz",
|
||||
"integrity": "sha512-yAkUOkIKZlK5dl7u6dg897doBgLXmUHhIINM2c+sND3DZwnrdQkkSiDh7N75Ll4mM4dxSkYfXqU9fW3lLkMFug==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -9829,9 +9829,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@types/emscripten": {
|
||||
"version": "1.40.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.40.0.tgz",
|
||||
"integrity": "sha512-MD2JJ25S4tnjnhjWyalMS6K6p0h+zQV6+Ylm+aGbiS8tSn/aHLSGNzBgduj6FB4zH0ax2GRMGYi/8G1uOxhXWA==",
|
||||
"version": "1.40.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.40.1.tgz",
|
||||
"integrity": "sha512-sr53lnYkQNhjHNN0oJDdUm5564biioI5DuOpycufDVK7D3y+GR3oUswe2rlwY1nPNyusHbrJ9WoTyIHl4/Bpwg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@types/estree": {
|
||||
@@ -9946,9 +9946,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@types/luxon": {
|
||||
"version": "3.4.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.4.2.tgz",
|
||||
"integrity": "sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA==",
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.6.0.tgz",
|
||||
"integrity": "sha512-RtEj20xRyG7cRp142MkQpV3GRF8Wo2MtDkKLz65MQs7rM1Lh8bz+HtfPXCCJEYpnDFu6VwAq/Iv2Ikyp9Jw/hw==",
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
@@ -9967,9 +9967,9 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "20.17.28",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.28.tgz",
|
||||
"integrity": "sha512-DHlH/fNL6Mho38jTy7/JT7sn2wnXI+wULR6PV4gy4VHLVvnrV/d3pHAMQHhc4gjdLmK2ZiPoMxzp6B3yRajLSQ==",
|
||||
"version": "20.17.30",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.30.tgz",
|
||||
"integrity": "sha512-7zf4YyHA+jvBNfVrk2Gtvs6x7E8V+YDW05bNfG2XkWDJfYRXrTiP/DsB2zSYTaHX0bGIujTBQdMVAhb+j7mwpg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"undici-types": "~6.19.2"
|
||||
@@ -12320,9 +12320,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/babel-preset-expo": {
|
||||
"version": "12.0.9",
|
||||
"resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-12.0.9.tgz",
|
||||
"integrity": "sha512-1c+ysrTavT49WgVAj0OX/TEzt1kU2mfPhDaDajstshNHXFKPenMPWSViA/DHrJKVIMwaqr+z3GbUOD9GtKgpdg==",
|
||||
"version": "12.0.10",
|
||||
"resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-12.0.10.tgz",
|
||||
"integrity": "sha512-6QE52Bxsp5XRE8t0taKRFTFsmTG0ThQE+PTgCgLY9s8v2Aeh8R+E+riXhSHX6hP+diDmBFBdvLCUTq7kroJb1Q==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"peer": true,
|
||||
@@ -12333,7 +12333,7 @@
|
||||
"@babel/plugin-transform-parameters": "^7.22.15",
|
||||
"@babel/preset-react": "^7.22.15",
|
||||
"@babel/preset-typescript": "^7.23.0",
|
||||
"@react-native/babel-preset": "0.76.7",
|
||||
"@react-native/babel-preset": "0.76.8",
|
||||
"babel-plugin-react-native-web": "~0.19.13",
|
||||
"react-refresh": "^0.14.2"
|
||||
},
|
||||
@@ -15601,9 +15601,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/electron-to-chromium": {
|
||||
"version": "1.5.128",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.128.tgz",
|
||||
"integrity": "sha512-bo1A4HH/NS522Ws0QNFIzyPcyUUNV/yyy70Ho1xqfGYzPUme2F/xr4tlEOuM6/A538U1vDA7a4XfCd1CKRegKQ==",
|
||||
"version": "1.5.129",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.129.tgz",
|
||||
"integrity": "sha512-JlXUemX4s0+9f8mLqib/bHH8gOHf5elKS6KeWG3sk3xozb/JTq/RLXIv8OKUWiK4Ah00Wm88EFj5PYkFr4RUPA==",
|
||||
"devOptional": true,
|
||||
"license": "ISC"
|
||||
},
|
||||
@@ -16642,21 +16642,21 @@
|
||||
}
|
||||
},
|
||||
"node_modules/expo": {
|
||||
"version": "52.0.41",
|
||||
"resolved": "https://registry.npmjs.org/expo/-/expo-52.0.41.tgz",
|
||||
"integrity": "sha512-qFdt1l2ltj5XWf1tnQ5UidWkaNQWf3CbhldjVb/ui/iGp1x038W7QUhT6BwaCOY6N9yuCZKnFS4Uk9Cxwfsc+w==",
|
||||
"version": "52.0.42",
|
||||
"resolved": "https://registry.npmjs.org/expo/-/expo-52.0.42.tgz",
|
||||
"integrity": "sha512-t+PRYIzzPFAlF99OVJOjZwM1glLhN85XGD6vmeg6uwpADDILl9yw4dfy0DXL4hot5GJkAGaZ+uOHUljV4kC2Bg==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.20.0",
|
||||
"@expo/cli": "0.22.22",
|
||||
"@expo/cli": "0.22.23",
|
||||
"@expo/config": "~10.0.11",
|
||||
"@expo/config-plugins": "~9.0.17",
|
||||
"@expo/fingerprint": "0.11.11",
|
||||
"@expo/metro-config": "0.19.12",
|
||||
"@expo/vector-icons": "^14.0.0",
|
||||
"babel-preset-expo": "~12.0.9",
|
||||
"babel-preset-expo": "~12.0.10",
|
||||
"expo-asset": "~11.0.5",
|
||||
"expo-constants": "~17.0.8",
|
||||
"expo-file-system": "~18.0.12",
|
||||
@@ -20874,9 +20874,9 @@
|
||||
"license": "ISC"
|
||||
},
|
||||
"node_modules/luxon": {
|
||||
"version": "3.6.0",
|
||||
"resolved": "https://registry.npmjs.org/luxon/-/luxon-3.6.0.tgz",
|
||||
"integrity": "sha512-WE7p0p7W1xji9qxkLYsvcIxZyfP48GuFrWIBQZIsbjCyf65dG1rv4n83HcOyEyhvzxJCrUoObCRNFgRNIQ5KNA==",
|
||||
"version": "3.6.1",
|
||||
"resolved": "https://registry.npmjs.org/luxon/-/luxon-3.6.1.tgz",
|
||||
"integrity": "sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
@@ -23524,9 +23524,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/nostr-tools": {
|
||||
"version": "2.11.0",
|
||||
"resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-2.11.0.tgz",
|
||||
"integrity": "sha512-kRtXI9j5f45NvIcdJacQ0UEAfEb7p/jhZqhAGLQWtUd5idZJPYdSyR8hdw+MmpGH4TCMH5plZrXzFltIIZrkEA==",
|
||||
"version": "2.11.1",
|
||||
"resolved": "https://registry.npmjs.org/nostr-tools/-/nostr-tools-2.11.1.tgz",
|
||||
"integrity": "sha512-+Oj5t+behIkU9kh3go5wg8Aa5oR7euBU9gOItUNapJe5Gaa+KPzMuTIN+rMRK3DaZ4Zt6RM4kR/ddwstzGKf7g==",
|
||||
"license": "Unlicense",
|
||||
"dependencies": {
|
||||
"@noble/ciphers": "^0.5.1",
|
||||
@@ -25409,21 +25409,21 @@
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/react-native": {
|
||||
"version": "0.78.1",
|
||||
"resolved": "https://registry.npmjs.org/react-native/-/react-native-0.78.1.tgz",
|
||||
"integrity": "sha512-3CK/xxX02GeeVFyrXbsHvREZFVaXwHW43Km/EdYITn5G32cccWTGaqY9QdPddEBLw5O3BPip3LHbR1SywE0cpA==",
|
||||
"version": "0.78.2",
|
||||
"resolved": "https://registry.npmjs.org/react-native/-/react-native-0.78.2.tgz",
|
||||
"integrity": "sha512-UilZ8sP9amHCz7TTMWMJ71JeYcMzEdgCJaqTfoB1hC/nYMXq6xqSFxKWCDhf7sR7nz3FKxS4t338t42AMDDkww==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@jest/create-cache-key-function": "^29.6.3",
|
||||
"@react-native/assets-registry": "0.78.1",
|
||||
"@react-native/codegen": "0.78.1",
|
||||
"@react-native/community-cli-plugin": "0.78.1",
|
||||
"@react-native/gradle-plugin": "0.78.1",
|
||||
"@react-native/js-polyfills": "0.78.1",
|
||||
"@react-native/normalize-colors": "0.78.1",
|
||||
"@react-native/virtualized-lists": "0.78.1",
|
||||
"@react-native/assets-registry": "0.78.2",
|
||||
"@react-native/codegen": "0.78.2",
|
||||
"@react-native/community-cli-plugin": "0.78.2",
|
||||
"@react-native/gradle-plugin": "0.78.2",
|
||||
"@react-native/js-polyfills": "0.78.2",
|
||||
"@react-native/normalize-colors": "0.78.2",
|
||||
"@react-native/virtualized-lists": "0.78.2",
|
||||
"abort-controller": "^3.0.0",
|
||||
"anser": "^1.4.9",
|
||||
"ansi-regex": "^5.0.0",
|
||||
@@ -25438,8 +25438,8 @@
|
||||
"invariant": "^2.2.4",
|
||||
"jest-environment-node": "^29.6.3",
|
||||
"memoize-one": "^5.0.0",
|
||||
"metro-runtime": "^0.81.0",
|
||||
"metro-source-map": "^0.81.0",
|
||||
"metro-runtime": "^0.81.3",
|
||||
"metro-source-map": "^0.81.3",
|
||||
"nullthrows": "^1.1.1",
|
||||
"pretty-format": "^29.7.0",
|
||||
"promise": "^8.3.0",
|
||||
@@ -25483,9 +25483,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/react-native/node_modules/@react-native/codegen": {
|
||||
"version": "0.78.1",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.78.1.tgz",
|
||||
"integrity": "sha512-kGG5qAM9JdFtxzUwe7c6CyJbsU2PnaTrtCHA2dF8VEiNX1K3yd9yKPzfkxA7HPvmHoAn3ga1941O79BStWcM3A==",
|
||||
"version": "0.78.2",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.78.2.tgz",
|
||||
"integrity": "sha512-4r3/W1h22/GAmAMuMRMJWsw/9JGUEDAnSbYNya7zID1XSvizLoA5Yn8Qv+phrRwwsl0eZLxOqONh/nzXJcvpyg==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"peer": true,
|
||||
@@ -25506,9 +25506,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/react-native/node_modules/@react-native/normalize-colors": {
|
||||
"version": "0.78.1",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.78.1.tgz",
|
||||
"integrity": "sha512-h4wARnY4iBFgigN1NjnaKFtcegWwQyE9+CEBVG4nHmwMtr8lZBmc7ZKIM6hUc6lxqY/ugHg48aSQSynss7mJUg==",
|
||||
"version": "0.78.2",
|
||||
"resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.78.2.tgz",
|
||||
"integrity": "sha512-CA/3ynRO6/g1LDbqU8ewrv0js/1lU4+j04L7qz6btXbLTDk1UkF+AfpGRJGbIVY9UmFBJ7l1AOmzwutrWb3Txw==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"peer": true
|
||||
@@ -26733,9 +26733,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/rollup": {
|
||||
"version": "4.38.0",
|
||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.38.0.tgz",
|
||||
"integrity": "sha512-5SsIRtJy9bf1ErAOiFMFzl64Ex9X5V7bnJ+WlFMb+zmP459OSWCEG7b0ERZ+PEU7xPt4OG3RHbrp1LJlXxYTrw==",
|
||||
"version": "4.39.0",
|
||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.39.0.tgz",
|
||||
"integrity": "sha512-thI8kNc02yNvnmJp8dr3fNWJ9tCONDhp6TV35X6HkKGGs9E6q7YWCHbe5vKiTa7TAiNcFEmXKj3X/pG2b3ci0g==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -26749,26 +26749,26 @@
|
||||
"npm": ">=8.0.0"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@rollup/rollup-android-arm-eabi": "4.38.0",
|
||||
"@rollup/rollup-android-arm64": "4.38.0",
|
||||
"@rollup/rollup-darwin-arm64": "4.38.0",
|
||||
"@rollup/rollup-darwin-x64": "4.38.0",
|
||||
"@rollup/rollup-freebsd-arm64": "4.38.0",
|
||||
"@rollup/rollup-freebsd-x64": "4.38.0",
|
||||
"@rollup/rollup-linux-arm-gnueabihf": "4.38.0",
|
||||
"@rollup/rollup-linux-arm-musleabihf": "4.38.0",
|
||||
"@rollup/rollup-linux-arm64-gnu": "4.38.0",
|
||||
"@rollup/rollup-linux-arm64-musl": "4.38.0",
|
||||
"@rollup/rollup-linux-loongarch64-gnu": "4.38.0",
|
||||
"@rollup/rollup-linux-powerpc64le-gnu": "4.38.0",
|
||||
"@rollup/rollup-linux-riscv64-gnu": "4.38.0",
|
||||
"@rollup/rollup-linux-riscv64-musl": "4.38.0",
|
||||
"@rollup/rollup-linux-s390x-gnu": "4.38.0",
|
||||
"@rollup/rollup-linux-x64-gnu": "4.38.0",
|
||||
"@rollup/rollup-linux-x64-musl": "4.38.0",
|
||||
"@rollup/rollup-win32-arm64-msvc": "4.38.0",
|
||||
"@rollup/rollup-win32-ia32-msvc": "4.38.0",
|
||||
"@rollup/rollup-win32-x64-msvc": "4.38.0",
|
||||
"@rollup/rollup-android-arm-eabi": "4.39.0",
|
||||
"@rollup/rollup-android-arm64": "4.39.0",
|
||||
"@rollup/rollup-darwin-arm64": "4.39.0",
|
||||
"@rollup/rollup-darwin-x64": "4.39.0",
|
||||
"@rollup/rollup-freebsd-arm64": "4.39.0",
|
||||
"@rollup/rollup-freebsd-x64": "4.39.0",
|
||||
"@rollup/rollup-linux-arm-gnueabihf": "4.39.0",
|
||||
"@rollup/rollup-linux-arm-musleabihf": "4.39.0",
|
||||
"@rollup/rollup-linux-arm64-gnu": "4.39.0",
|
||||
"@rollup/rollup-linux-arm64-musl": "4.39.0",
|
||||
"@rollup/rollup-linux-loongarch64-gnu": "4.39.0",
|
||||
"@rollup/rollup-linux-powerpc64le-gnu": "4.39.0",
|
||||
"@rollup/rollup-linux-riscv64-gnu": "4.39.0",
|
||||
"@rollup/rollup-linux-riscv64-musl": "4.39.0",
|
||||
"@rollup/rollup-linux-s390x-gnu": "4.39.0",
|
||||
"@rollup/rollup-linux-x64-gnu": "4.39.0",
|
||||
"@rollup/rollup-linux-x64-musl": "4.39.0",
|
||||
"@rollup/rollup-win32-arm64-msvc": "4.39.0",
|
||||
"@rollup/rollup-win32-ia32-msvc": "4.39.0",
|
||||
"@rollup/rollup-win32-x64-msvc": "4.39.0",
|
||||
"fsevents": "~2.3.2"
|
||||
}
|
||||
},
|
||||
@@ -30206,9 +30206,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/vite": {
|
||||
"version": "5.4.15",
|
||||
"resolved": "https://registry.npmjs.org/vite/-/vite-5.4.15.tgz",
|
||||
"integrity": "sha512-6ANcZRivqL/4WtwPGTKNaosuNJr5tWiftOC7liM7G9+rMb8+oeJeyzymDu4rTN93seySBmbjSfsS3Vzr19KNtA==",
|
||||
"version": "5.4.16",
|
||||
"resolved": "https://registry.npmjs.org/vite/-/vite-5.4.16.tgz",
|
||||
"integrity": "sha512-Y5gnfp4NemVfgOTDQAunSD4346fal44L9mszGGY/e+qxsRT5y1sMlS/8tiQ8AFAp+MFgYNSINdfEchJiPm41vQ==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
|
||||
@@ -1,12 +1,8 @@
|
||||
/**
|
||||
* @file InfiniteScroll.vue
|
||||
* @description A Vue component that implements infinite scrolling functionality using the Intersection Observer API.
|
||||
* This component emits a 'reached-bottom' event when the user scrolls near the bottom of the content.
|
||||
* It includes debouncing to prevent multiple rapid triggers and loading state management.
|
||||
*
|
||||
* @author Matthew Raymer
|
||||
* @version 1.0.0
|
||||
*/
|
||||
/** * @file InfiniteScroll.vue * @description A Vue component that implements
|
||||
infinite scrolling functionality using the Intersection Observer API. * This
|
||||
component emits a 'reached-bottom' event when the user scrolls near the bottom
|
||||
of the content. * It includes debouncing to prevent multiple rapid triggers and
|
||||
loading state management. * * @author Matthew Raymer * @version 1.0.0 */
|
||||
|
||||
<template>
|
||||
<div ref="scrollContainer">
|
||||
@@ -20,21 +16,21 @@ import { Component, Emit, Prop, Vue } from "vue-facing-decorator";
|
||||
|
||||
/**
|
||||
* InfiniteScroll Component
|
||||
*
|
||||
*
|
||||
* This component implements infinite scrolling functionality by observing when a user
|
||||
* scrolls near the bottom of the content. It uses the Intersection Observer API for
|
||||
* efficient scroll detection and includes debouncing to prevent multiple rapid triggers.
|
||||
*
|
||||
*
|
||||
* Usage in template:
|
||||
* ```vue
|
||||
* <InfiniteScroll @reached-bottom="loadMore">
|
||||
* <div>Content goes here</div>
|
||||
* </InfiniteScroll>
|
||||
* ```
|
||||
*
|
||||
*
|
||||
* Props:
|
||||
* - distance: number (default: 200) - Distance in pixels from the bottom at which to trigger the event
|
||||
*
|
||||
*
|
||||
* Events:
|
||||
* - reached-bottom: Emitted when the user scrolls near the bottom of the content
|
||||
*/
|
||||
@@ -59,7 +55,7 @@ export default class InfiniteScroll extends Vue {
|
||||
/**
|
||||
* Vue lifecycle hook that runs after component updates.
|
||||
* Initializes the Intersection Observer if not already set up.
|
||||
*
|
||||
*
|
||||
* @internal
|
||||
* Used internally by Vue's lifecycle system
|
||||
*/
|
||||
@@ -81,7 +77,7 @@ export default class InfiniteScroll extends Vue {
|
||||
/**
|
||||
* Vue lifecycle hook that runs before component unmounting.
|
||||
* Cleans up the Intersection Observer and any pending timeouts.
|
||||
*
|
||||
*
|
||||
* @internal
|
||||
* Used internally by Vue's lifecycle system
|
||||
*/
|
||||
@@ -97,10 +93,10 @@ export default class InfiniteScroll extends Vue {
|
||||
/**
|
||||
* Handles intersection observer callbacks when the sentinel element becomes visible.
|
||||
* Implements debouncing to prevent multiple rapid triggers and manages loading state.
|
||||
*
|
||||
*
|
||||
* @param entries - Array of IntersectionObserverEntry objects
|
||||
* @returns false (required by @Emit decorator)
|
||||
*
|
||||
*
|
||||
* @internal
|
||||
* Used internally by the Intersection Observer
|
||||
* @emits reached-bottom - Emitted when the user scrolls near the bottom
|
||||
@@ -113,7 +109,7 @@ export default class InfiniteScroll extends Vue {
|
||||
if (this.debounceTimeout) {
|
||||
window.clearTimeout(this.debounceTimeout);
|
||||
}
|
||||
|
||||
|
||||
this.debounceTimeout = window.setTimeout(() => {
|
||||
this.isLoading = true;
|
||||
this.$emit("reached-bottom", true);
|
||||
|
||||
@@ -222,7 +222,6 @@
|
||||
<div v-if="libsUtil.isGiveAction(veriClaim)">
|
||||
<div class="flex columns-3">
|
||||
<button
|
||||
class="col-span-1 bg-gradient-to-b from-slate-400 to-slate-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white mt-2 px-4 py-2 rounded-md"
|
||||
v-if="
|
||||
libsUtil.isGiveRecordTheUserCanConfirm(
|
||||
isRegistered,
|
||||
|
||||
@@ -199,7 +199,7 @@
|
||||
|
||||
<EntityIcon
|
||||
:contact="contact"
|
||||
:iconSize="48"
|
||||
:icon-size="48"
|
||||
class="inline-block align-text-bottom border border-slate-300 rounded cursor-pointer overflow-hidden"
|
||||
@click="showLargeIdenticon = contact"
|
||||
/>
|
||||
@@ -237,17 +237,17 @@
|
||||
>
|
||||
<button
|
||||
class="text-sm bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-1.5 rounded-l-md"
|
||||
@click="confirmShowGiftedDialog(contact.did, activeDid)"
|
||||
:title="givenToMeDescriptions[contact.did] || ''"
|
||||
@click="confirmShowGiftedDialog(contact.did, activeDid)"
|
||||
>
|
||||
From:
|
||||
<br />
|
||||
{{
|
||||
/* eslint-disable prettier/prettier */
|
||||
this.showGiveTotals
|
||||
showGiveTotals
|
||||
? ((givenToMeConfirmed[contact.did] || 0)
|
||||
+ (givenToMeUnconfirmed[contact.did] || 0))
|
||||
: this.showGiveConfirmed
|
||||
: showGiveConfirmed
|
||||
? (givenToMeConfirmed[contact.did] || 0)
|
||||
: (givenToMeUnconfirmed[contact.did] || 0)
|
||||
/* eslint-enable prettier/prettier */
|
||||
@@ -256,17 +256,17 @@
|
||||
|
||||
<button
|
||||
class="text-sm bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white -ml-1.5 px-2 py-1.5 rounded-r-md border-l"
|
||||
@click="confirmShowGiftedDialog(activeDid, contact.did)"
|
||||
:title="givenByMeDescriptions[contact.did] || ''"
|
||||
@click="confirmShowGiftedDialog(activeDid, contact.did)"
|
||||
>
|
||||
To:
|
||||
<br />
|
||||
{{
|
||||
/* eslint-disable prettier/prettier */
|
||||
this.showGiveTotals
|
||||
showGiveTotals
|
||||
? ((givenByMeConfirmed[contact.did] || 0)
|
||||
+ (givenByMeUnconfirmed[contact.did] || 0))
|
||||
: this.showGiveConfirmed
|
||||
: showGiveConfirmed
|
||||
? (givenByMeConfirmed[contact.did] || 0)
|
||||
: (givenByMeUnconfirmed[contact.did] || 0)
|
||||
/* eslint-enable prettier/prettier */
|
||||
@@ -275,8 +275,8 @@
|
||||
|
||||
<button
|
||||
class="text-sm bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-2 py-1.5 rounded-md border border-blue-400"
|
||||
@click="openOfferDialog(contact.did, contact.name)"
|
||||
data-testId="offerButton"
|
||||
@click="openOfferDialog(contact.did, contact.name)"
|
||||
>
|
||||
Offer
|
||||
</button>
|
||||
|
||||
@@ -1,12 +1,8 @@
|
||||
/**
|
||||
* @file HomeView.vue
|
||||
* @description Main view component for the application's home page. Handles user identity, feed management,
|
||||
* and interaction with various dialogs and components. Implements infinite scrolling for activity feed
|
||||
* and manages user registration status.
|
||||
*
|
||||
* @author Matthew Raymer
|
||||
* @version 1.0.0
|
||||
*/
|
||||
/** * @file HomeView.vue * @description Main view component for the
|
||||
application's home page. Handles user identity, feed management, * and
|
||||
interaction with various dialogs and components. Implements infinite scrolling
|
||||
for activity feed * and manages user registration status. * * @author Matthew
|
||||
Raymer * @version 1.0.0 */
|
||||
|
||||
<template>
|
||||
<QuickNav selected="Home" />
|
||||
@@ -356,21 +352,21 @@ import { GiveRecordWithContactInfo } from "types";
|
||||
|
||||
/**
|
||||
* HomeView Component
|
||||
*
|
||||
*
|
||||
* Main view component that handles:
|
||||
* 1. User identity and registration management
|
||||
* 2. Activity feed with infinite scrolling
|
||||
* 3. Contact management and display
|
||||
* 4. Gift/claim creation and viewing
|
||||
* 5. Feed filtering and settings
|
||||
*
|
||||
*
|
||||
* Template Usage:
|
||||
* ```vue
|
||||
* <HomeView>
|
||||
* <!-- Content is managed internally -->
|
||||
* </HomeView>
|
||||
* ```
|
||||
*
|
||||
*
|
||||
* Component Dependencies:
|
||||
* - QuickNav: Navigation component
|
||||
* - TopMessage: Message display component
|
||||
@@ -444,7 +440,7 @@ export default class HomeView extends Vue {
|
||||
* 5. Load feed data
|
||||
* 6. Load new offers
|
||||
* 7. Check onboarding status
|
||||
*
|
||||
*
|
||||
* @internal
|
||||
* Called automatically by Vue lifecycle system
|
||||
*/
|
||||
@@ -468,7 +464,7 @@ export default class HomeView extends Vue {
|
||||
* - Creates new DID if none exists
|
||||
* - Loads user settings and contacts
|
||||
* - Checks registration status
|
||||
*
|
||||
*
|
||||
* @internal
|
||||
* Called by mounted()
|
||||
* @throws Logs error if DID retrieval fails
|
||||
@@ -576,7 +572,7 @@ export default class HomeView extends Vue {
|
||||
* - Feed filters and view settings
|
||||
* - Registration status
|
||||
* - Notification acknowledgments
|
||||
*
|
||||
*
|
||||
* @internal
|
||||
* Called by mounted() and reloadFeedOnChange()
|
||||
*/
|
||||
@@ -600,7 +596,7 @@ export default class HomeView extends Vue {
|
||||
/**
|
||||
* Loads user contacts from database
|
||||
* Used for displaying contact info in feed and actions
|
||||
*
|
||||
*
|
||||
* @internal
|
||||
* Called by mounted() and initializeIdentity()
|
||||
*/
|
||||
@@ -613,7 +609,7 @@ export default class HomeView extends Vue {
|
||||
* - Checks if unregistered user can access API
|
||||
* - Updates registration status if successful
|
||||
* - Preserves unregistered state on failure
|
||||
*
|
||||
*
|
||||
* @internal
|
||||
* Called by mounted() and initializeIdentity()
|
||||
*/
|
||||
@@ -642,7 +638,7 @@ export default class HomeView extends Vue {
|
||||
/**
|
||||
* Initializes feed data
|
||||
* Triggers updateAllFeed() to populate activity feed
|
||||
*
|
||||
*
|
||||
* @internal
|
||||
* Called by mounted()
|
||||
*/
|
||||
@@ -656,7 +652,7 @@ export default class HomeView extends Vue {
|
||||
* - Number of new direct offers
|
||||
* - Number of new project offers
|
||||
* - Rate limit status for both
|
||||
*
|
||||
*
|
||||
* @internal
|
||||
* Called by mounted() and initializeIdentity()
|
||||
* @requires Active DID
|
||||
@@ -686,7 +682,7 @@ export default class HomeView extends Vue {
|
||||
/**
|
||||
* Checks if user needs onboarding
|
||||
* Opens onboarding dialog if not completed
|
||||
*
|
||||
*
|
||||
* @internal
|
||||
* Called by mounted()
|
||||
*/
|
||||
@@ -701,7 +697,7 @@ export default class HomeView extends Vue {
|
||||
* Handles errors during initialization
|
||||
* - Logs error to console and database
|
||||
* - Displays user notification
|
||||
*
|
||||
*
|
||||
* @internal
|
||||
* Called by mounted() and handleFeedError()
|
||||
* @param err Error object with optional userMessage
|
||||
@@ -723,7 +719,7 @@ export default class HomeView extends Vue {
|
||||
|
||||
/**
|
||||
* Checks if feed results are being filtered
|
||||
*
|
||||
*
|
||||
* @public
|
||||
* Used in template for filter button display
|
||||
* @returns true if visible or nearby filters are active
|
||||
@@ -734,7 +730,7 @@ export default class HomeView extends Vue {
|
||||
|
||||
/**
|
||||
* Checks if browser notifications are supported
|
||||
*
|
||||
*
|
||||
* @public
|
||||
* Used in template for notification feature detection
|
||||
* @returns true if Notification API is available
|
||||
@@ -748,7 +744,7 @@ export default class HomeView extends Vue {
|
||||
* - Updates filter states
|
||||
* - Clears existing feed data
|
||||
* - Triggers new feed load
|
||||
*
|
||||
*
|
||||
* @public
|
||||
* Called by FeedFilters component when filters change
|
||||
*/
|
||||
@@ -765,7 +761,7 @@ export default class HomeView extends Vue {
|
||||
|
||||
/**
|
||||
* Loads more feed items for infinite scroll
|
||||
*
|
||||
*
|
||||
* @public
|
||||
* Called by InfiniteScroll component when bottom is reached
|
||||
* @param payload Boolean indicating if more items should be loaded
|
||||
@@ -781,18 +777,18 @@ export default class HomeView extends Vue {
|
||||
|
||||
/**
|
||||
* Checks if coordinates fall within any search box
|
||||
*
|
||||
*
|
||||
* @internal
|
||||
* @callGraph
|
||||
* Called by: shouldIncludeRecord()
|
||||
* Calls: None
|
||||
*
|
||||
*
|
||||
* @chain
|
||||
* shouldIncludeRecord() -> latLongInAnySearchBox()
|
||||
*
|
||||
*
|
||||
* @requires
|
||||
* - this.searchBoxes
|
||||
*
|
||||
*
|
||||
* @param lat Latitude to check
|
||||
* @param long Longitude to check
|
||||
* @returns true if coordinates are within any search box
|
||||
@@ -812,10 +808,10 @@ export default class HomeView extends Vue {
|
||||
|
||||
/**
|
||||
* Updates feed with latest activity
|
||||
*
|
||||
*
|
||||
* @internal
|
||||
* @callGraph
|
||||
* Called by:
|
||||
* Called by:
|
||||
* - loadMoreGives()
|
||||
* - initializeIdentity()
|
||||
* Calls:
|
||||
@@ -823,16 +819,16 @@ export default class HomeView extends Vue {
|
||||
* - processFeedResults()
|
||||
* - updateFeedLastViewedId()
|
||||
* - handleFeedError()
|
||||
*
|
||||
*
|
||||
* @chain
|
||||
* loadMoreGives() -> updateAllFeed()
|
||||
* initializeIdentity() -> updateAllFeed()
|
||||
*
|
||||
*
|
||||
* @requires
|
||||
* - this.apiServer
|
||||
* - this.activeDid
|
||||
* - this.feedPreviousOldestId
|
||||
*
|
||||
*
|
||||
* @modifies
|
||||
* - this.isFeedLoading
|
||||
* - this.feedData (via processFeedResults)
|
||||
@@ -841,9 +837,12 @@ export default class HomeView extends Vue {
|
||||
async updateAllFeed() {
|
||||
this.isFeedLoading = true;
|
||||
let endOfResults = true;
|
||||
|
||||
|
||||
try {
|
||||
const results = await this.retrieveGives(this.apiServer, this.feedPreviousOldestId);
|
||||
const results = await this.retrieveGives(
|
||||
this.apiServer,
|
||||
this.feedPreviousOldestId,
|
||||
);
|
||||
if (results.data.length > 0) {
|
||||
endOfResults = false;
|
||||
await this.processFeedResults(results.data);
|
||||
@@ -856,29 +855,29 @@ export default class HomeView extends Vue {
|
||||
if (this.feedData.length === 0 && !endOfResults) {
|
||||
await this.updateAllFeed();
|
||||
}
|
||||
|
||||
|
||||
this.isFeedLoading = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Processes feed results and adds them to feedData
|
||||
*
|
||||
*
|
||||
* @internal
|
||||
* @callGraph
|
||||
* Called by: updateAllFeed()
|
||||
* Calls: processRecord()
|
||||
*
|
||||
*
|
||||
* @chain
|
||||
* updateAllFeed() -> processFeedResults()
|
||||
*
|
||||
*
|
||||
* @requires
|
||||
* - this.feedData
|
||||
* - this.feedPreviousOldestId
|
||||
*
|
||||
*
|
||||
* @modifies
|
||||
* - this.feedData
|
||||
* - this.feedPreviousOldestId
|
||||
*
|
||||
*
|
||||
* @param records Array of feed records to process
|
||||
*/
|
||||
private async processFeedResults(records: GiveSummaryRecord[]) {
|
||||
@@ -893,11 +892,11 @@ export default class HomeView extends Vue {
|
||||
|
||||
/**
|
||||
* Processes a single record and returns it if it passes filters
|
||||
*
|
||||
*
|
||||
* @internal
|
||||
* @callGraph
|
||||
* Called by: processFeedResults()
|
||||
* Calls:
|
||||
* Calls:
|
||||
* - extractClaim()
|
||||
* - extractGiverDid()
|
||||
* - extractRecipientDid()
|
||||
@@ -906,24 +905,26 @@ export default class HomeView extends Vue {
|
||||
* - extractProvider()
|
||||
* - getProvidedByPlan()
|
||||
* - createFeedRecord()
|
||||
*
|
||||
*
|
||||
* @chain
|
||||
* updateAllFeed() -> processFeedResults() -> processRecord()
|
||||
*
|
||||
*
|
||||
* @requires
|
||||
* - this.isAnyFeedFilterOn
|
||||
* - this.isFeedFilteredByVisible
|
||||
* - this.isFeedFilteredByNearby
|
||||
* - this.activeDid
|
||||
* - this.allContacts
|
||||
*
|
||||
*
|
||||
* @modifies
|
||||
* - this.feedData (via createFeedRecord)
|
||||
*
|
||||
*
|
||||
* @param record The record to process
|
||||
* @returns Processed record with contact info if it passes filters, null otherwise
|
||||
*/
|
||||
private async processRecord(record: GiveSummaryRecord): Promise<GiveRecordWithContactInfo | null> {
|
||||
private async processRecord(
|
||||
record: GiveSummaryRecord,
|
||||
): Promise<GiveRecordWithContactInfo | null> {
|
||||
const claim = this.extractClaim(record);
|
||||
const giverDid = this.extractGiverDid(claim);
|
||||
const recipientDid = this.extractRecipientDid(claim);
|
||||
@@ -936,23 +937,31 @@ export default class HomeView extends Vue {
|
||||
const provider = this.extractProvider(claim);
|
||||
const providedByPlan = await this.getProvidedByPlan(provider);
|
||||
|
||||
return this.createFeedRecord(record, claim, giverDid, recipientDid, provider, fulfillsPlan, providedByPlan);
|
||||
return this.createFeedRecord(
|
||||
record,
|
||||
claim,
|
||||
giverDid,
|
||||
recipientDid,
|
||||
provider,
|
||||
fulfillsPlan,
|
||||
providedByPlan,
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Extracts claim from record, handling both direct and wrapped claims
|
||||
*
|
||||
*
|
||||
* @internal
|
||||
* @callGraph
|
||||
* Called by: processRecord()
|
||||
* Calls: None
|
||||
*
|
||||
*
|
||||
* @chain
|
||||
* processRecord() -> extractClaim()
|
||||
*
|
||||
*
|
||||
* @requires
|
||||
* - record.fullClaim
|
||||
*
|
||||
*
|
||||
* @param record The record containing the claim
|
||||
* @returns The extracted claim object
|
||||
*/
|
||||
@@ -963,18 +972,18 @@ export default class HomeView extends Vue {
|
||||
|
||||
/**
|
||||
* Extracts giver DID from claim
|
||||
*
|
||||
*
|
||||
* @internal
|
||||
* @callGraph
|
||||
* Called by: processRecord()
|
||||
* Calls: None
|
||||
*
|
||||
*
|
||||
* @chain
|
||||
* processRecord() -> extractGiverDid()
|
||||
*
|
||||
*
|
||||
* @requires
|
||||
* - claim.agent
|
||||
*
|
||||
*
|
||||
* @param claim The claim object containing giver information
|
||||
* @returns The giver's DID
|
||||
*/
|
||||
@@ -985,7 +994,7 @@ export default class HomeView extends Vue {
|
||||
|
||||
/**
|
||||
* Extracts recipient DID from claim
|
||||
*
|
||||
*
|
||||
* @internal
|
||||
* Called by processRecord()
|
||||
*/
|
||||
@@ -996,20 +1005,20 @@ export default class HomeView extends Vue {
|
||||
|
||||
/**
|
||||
* Gets fulfills plan from cache
|
||||
*
|
||||
*
|
||||
* @internal
|
||||
* @callGraph
|
||||
* Called by: processRecord()
|
||||
* Calls: getPlanFromCache()
|
||||
*
|
||||
*
|
||||
* @chain
|
||||
* processRecord() -> getFulfillsPlan()
|
||||
*
|
||||
*
|
||||
* @requires
|
||||
* - this.axios
|
||||
* - this.apiServer
|
||||
* - this.activeDid
|
||||
*
|
||||
*
|
||||
* @param record The record containing the plan handle ID
|
||||
* @returns The fulfills plan object
|
||||
*/
|
||||
@@ -1024,28 +1033,31 @@ export default class HomeView extends Vue {
|
||||
|
||||
/**
|
||||
* Checks if record should be included based on filters
|
||||
*
|
||||
*
|
||||
* @internal
|
||||
* @callGraph
|
||||
* Called by: processRecord()
|
||||
* Calls:
|
||||
* Calls:
|
||||
* - containsNonHiddenDid()
|
||||
* - latLongInAnySearchBox()
|
||||
*
|
||||
*
|
||||
* @chain
|
||||
* processRecord() -> shouldIncludeRecord()
|
||||
*
|
||||
*
|
||||
* @requires
|
||||
* - this.isAnyFeedFilterOn
|
||||
* - this.isFeedFilteredByVisible
|
||||
* - this.isFeedFilteredByNearby
|
||||
* - this.searchBoxes
|
||||
*
|
||||
*
|
||||
* @param record The record to check
|
||||
* @param fulfillsPlan The fulfills plan object
|
||||
* @returns true if record should be included based on filters
|
||||
*/
|
||||
private shouldIncludeRecord(record: GiveSummaryRecord, fulfillsPlan: any): boolean {
|
||||
private shouldIncludeRecord(
|
||||
record: GiveSummaryRecord,
|
||||
fulfillsPlan: any,
|
||||
): boolean {
|
||||
if (!this.isAnyFeedFilterOn) {
|
||||
return true;
|
||||
}
|
||||
@@ -1055,9 +1067,17 @@ export default class HomeView extends Vue {
|
||||
anyMatch = true;
|
||||
}
|
||||
|
||||
if (!anyMatch && this.isFeedFilteredByNearby && record.fulfillsPlanHandleId) {
|
||||
if (
|
||||
!anyMatch &&
|
||||
this.isFeedFilteredByNearby &&
|
||||
record.fulfillsPlanHandleId
|
||||
) {
|
||||
if (fulfillsPlan?.locLat && fulfillsPlan?.locLon) {
|
||||
anyMatch = this.latLongInAnySearchBox(fulfillsPlan.locLat, fulfillsPlan.locLon) ?? false;
|
||||
anyMatch =
|
||||
this.latLongInAnySearchBox(
|
||||
fulfillsPlan.locLat,
|
||||
fulfillsPlan.locLon,
|
||||
) ?? false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1066,7 +1086,7 @@ export default class HomeView extends Vue {
|
||||
|
||||
/**
|
||||
* Extracts provider from claim
|
||||
*
|
||||
*
|
||||
* @internal
|
||||
* Called by processRecord()
|
||||
*/
|
||||
@@ -1076,7 +1096,7 @@ export default class HomeView extends Vue {
|
||||
|
||||
/**
|
||||
* Gets provided by plan from cache
|
||||
*
|
||||
*
|
||||
* @internal
|
||||
* Called by processRecord()
|
||||
*/
|
||||
@@ -1091,22 +1111,22 @@ export default class HomeView extends Vue {
|
||||
|
||||
/**
|
||||
* Creates a feed record with contact info
|
||||
*
|
||||
*
|
||||
* @internal
|
||||
* @callGraph
|
||||
* Called by: processRecord()
|
||||
* Calls:
|
||||
* Calls:
|
||||
* - didInfoForContact()
|
||||
* - contactForDid()
|
||||
*
|
||||
*
|
||||
* @chain
|
||||
* processRecord() -> createFeedRecord()
|
||||
*
|
||||
*
|
||||
* @requires
|
||||
* - this.activeDid
|
||||
* - this.allContacts
|
||||
* - this.allMyDids
|
||||
*
|
||||
*
|
||||
* @param record The base record
|
||||
* @param claim The claim object
|
||||
* @param giverDid The giver's DID
|
||||
@@ -1123,13 +1143,13 @@ export default class HomeView extends Vue {
|
||||
recipientDid: string,
|
||||
provider: any,
|
||||
fulfillsPlan: any,
|
||||
providedByPlan: any
|
||||
providedByPlan: any,
|
||||
): GiveRecordWithContactInfo {
|
||||
return {
|
||||
...record,
|
||||
jwtId: record.jwtId,
|
||||
fullClaim: record.fullClaim,
|
||||
description: record.description || '',
|
||||
description: record.description || "",
|
||||
handleId: record.handleId,
|
||||
issuerDid: record.issuerDid,
|
||||
fulfillsPlanHandleId: record.fulfillsPlanHandleId,
|
||||
@@ -1160,7 +1180,7 @@ export default class HomeView extends Vue {
|
||||
|
||||
/**
|
||||
* Updates the last viewed claim ID in settings
|
||||
*
|
||||
*
|
||||
* @internal
|
||||
* Called by updateAllFeed()
|
||||
*/
|
||||
@@ -1178,7 +1198,7 @@ export default class HomeView extends Vue {
|
||||
|
||||
/**
|
||||
* Handles feed error and shows notification
|
||||
*
|
||||
*
|
||||
* @internal
|
||||
* Called by updateAllFeed()
|
||||
*/
|
||||
@@ -1197,7 +1217,7 @@ export default class HomeView extends Vue {
|
||||
|
||||
/**
|
||||
* Retrieve claims in reverse chronological order
|
||||
*
|
||||
*
|
||||
* @internal
|
||||
* Called by updateAllFeed()
|
||||
* @param endorserApiServer API server URL
|
||||
@@ -1237,22 +1257,22 @@ export default class HomeView extends Vue {
|
||||
|
||||
/**
|
||||
* Formats gift description with giver and recipient info
|
||||
*
|
||||
*
|
||||
* @public
|
||||
* @callGraph
|
||||
* Called by: Template
|
||||
* Calls: displayAmount()
|
||||
*
|
||||
*
|
||||
* @chain
|
||||
* Template -> giveDescription() -> displayAmount() -> currencyShortWordForCode()
|
||||
*
|
||||
*
|
||||
* @requires
|
||||
* - giveRecord.fullClaim
|
||||
* - giveRecord.giver
|
||||
* - giveRecord.receiver
|
||||
* - giveRecord.recipientProjectName
|
||||
* - giveRecord.providerPlanName
|
||||
*
|
||||
*
|
||||
* @param giveRecord Record containing gift information
|
||||
* @returns formatted description string
|
||||
*/
|
||||
@@ -1338,7 +1358,7 @@ export default class HomeView extends Vue {
|
||||
|
||||
/**
|
||||
* Navigates to activity page
|
||||
*
|
||||
*
|
||||
* @public
|
||||
* Called by template click handler
|
||||
*/
|
||||
@@ -1348,7 +1368,7 @@ export default class HomeView extends Vue {
|
||||
|
||||
/**
|
||||
* Navigates to claim details page
|
||||
*
|
||||
*
|
||||
* @public
|
||||
* Called by ActivityListItem component
|
||||
* @param jwtId ID of the claim to view
|
||||
@@ -1362,19 +1382,19 @@ export default class HomeView extends Vue {
|
||||
|
||||
/**
|
||||
* Formats amount with currency code
|
||||
*
|
||||
*
|
||||
* @internal
|
||||
* @callGraph
|
||||
* Called by: giveDescription()
|
||||
* Calls: currencyShortWordForCode()
|
||||
*
|
||||
*
|
||||
* @chain
|
||||
* giveDescription() -> displayAmount() -> currencyShortWordForCode()
|
||||
*
|
||||
*
|
||||
* @requires
|
||||
* - code: string (currency code)
|
||||
* - amt: number (amount to format)
|
||||
*
|
||||
*
|
||||
* @param code Currency code
|
||||
* @param amt Amount to format
|
||||
* @returns formatted amount string
|
||||
@@ -1385,19 +1405,19 @@ export default class HomeView extends Vue {
|
||||
|
||||
/**
|
||||
* Gets currency word based on code and plurality
|
||||
*
|
||||
*
|
||||
* @internal
|
||||
* @callGraph
|
||||
* Called by: displayAmount()
|
||||
* Calls: None
|
||||
*
|
||||
*
|
||||
* @chain
|
||||
* giveDescription() -> displayAmount() -> currencyShortWordForCode()
|
||||
*
|
||||
*
|
||||
* @requires
|
||||
* - unitCode: string (currency code)
|
||||
* - single: boolean (whether to use singular form)
|
||||
*
|
||||
*
|
||||
* @param unitCode Currency code
|
||||
* @param single Whether to use singular form
|
||||
* @returns formatted currency word
|
||||
@@ -1408,22 +1428,22 @@ export default class HomeView extends Vue {
|
||||
|
||||
/**
|
||||
* Opens dialog for creating new gift/claim
|
||||
*
|
||||
*
|
||||
* @public
|
||||
* @callGraph
|
||||
* Called by:
|
||||
* Called by:
|
||||
* - Template
|
||||
* - openGiftedPrompts()
|
||||
* Calls: GiftedDialog.open()
|
||||
*
|
||||
*
|
||||
* @chain
|
||||
* Template -> openDialog()
|
||||
* openGiftedPrompts() -> openDialog()
|
||||
*
|
||||
*
|
||||
* @requires
|
||||
* - this.$refs.customDialog
|
||||
* - this.activeDid
|
||||
*
|
||||
*
|
||||
* @param giver Optional contact info for giver
|
||||
* @param description Optional gift description
|
||||
*/
|
||||
@@ -1442,18 +1462,18 @@ export default class HomeView extends Vue {
|
||||
|
||||
/**
|
||||
* Opens prompts for gift ideas
|
||||
*
|
||||
*
|
||||
* @public
|
||||
* @callGraph
|
||||
* Called by: Template
|
||||
* Calls: openDialog()
|
||||
*
|
||||
*
|
||||
* @chain
|
||||
* Template -> openGiftedPrompts() -> openDialog()
|
||||
*
|
||||
*
|
||||
* @requires
|
||||
* - this.$refs.giftedPrompts
|
||||
*
|
||||
*
|
||||
* @param callback Function to handle selected gift info
|
||||
*/
|
||||
openGiftedPrompts() {
|
||||
@@ -1464,7 +1484,7 @@ export default class HomeView extends Vue {
|
||||
|
||||
/**
|
||||
* Opens feed filter configuration
|
||||
*
|
||||
*
|
||||
* @public
|
||||
* Called by template click handler
|
||||
*/
|
||||
@@ -1474,7 +1494,7 @@ export default class HomeView extends Vue {
|
||||
|
||||
/**
|
||||
* Shows toast notification to user
|
||||
*
|
||||
*
|
||||
* @internal
|
||||
* Used for various user notifications
|
||||
* @param message Message to display
|
||||
@@ -1493,7 +1513,7 @@ export default class HomeView extends Vue {
|
||||
|
||||
/**
|
||||
* Computes CSS classes for known person icons
|
||||
*
|
||||
*
|
||||
* @public
|
||||
* Used in template for icon styling
|
||||
* @param known Whether the person is known
|
||||
@@ -1505,17 +1525,17 @@ export default class HomeView extends Vue {
|
||||
|
||||
/**
|
||||
* Shows name input dialog if needed
|
||||
*
|
||||
*
|
||||
* @public
|
||||
* @callGraph
|
||||
* Called by: Template
|
||||
* Calls:
|
||||
* Calls:
|
||||
* - UserNameDialog.open()
|
||||
* - promptForShareMethod()
|
||||
*
|
||||
*
|
||||
* @chain
|
||||
* Template -> showNameThenIdDialog() -> promptForShareMethod()
|
||||
*
|
||||
*
|
||||
* @requires
|
||||
* - this.$refs.userNameDialog
|
||||
* - this.givenName
|
||||
@@ -1532,15 +1552,15 @@ export default class HomeView extends Vue {
|
||||
|
||||
/**
|
||||
* Shows dialog for sharing method selection
|
||||
*
|
||||
*
|
||||
* @internal
|
||||
* @callGraph
|
||||
* Called by: showNameThenIdDialog()
|
||||
* Calls: ChoiceButtonDialog.open()
|
||||
*
|
||||
*
|
||||
* @chain
|
||||
* Template -> showNameThenIdDialog() -> promptForShareMethod()
|
||||
*
|
||||
*
|
||||
* @requires
|
||||
* - this.$refs.choiceButtonDialog
|
||||
* - this.$router
|
||||
@@ -1566,7 +1586,7 @@ export default class HomeView extends Vue {
|
||||
|
||||
/**
|
||||
* Caches image data for sharing
|
||||
*
|
||||
*
|
||||
* @public
|
||||
* Called by ActivityListItem component
|
||||
* @param event Event object
|
||||
@@ -1584,7 +1604,7 @@ export default class HomeView extends Vue {
|
||||
|
||||
/**
|
||||
* Opens image viewer dialog
|
||||
*
|
||||
*
|
||||
* @public
|
||||
* Called by ActivityListItem component
|
||||
* @param imageUrl URL of image to display
|
||||
@@ -1597,7 +1617,7 @@ export default class HomeView extends Vue {
|
||||
|
||||
/**
|
||||
* Handles claim confirmation
|
||||
*
|
||||
*
|
||||
* @public
|
||||
* Called by ActivityListItem component
|
||||
* @param record Record to confirm
|
||||
|
||||
@@ -266,8 +266,8 @@
|
||||
<div class="text-center">
|
||||
<button
|
||||
data-testId="offerButton"
|
||||
@click="openOfferDialog()"
|
||||
class="block w-full bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-3 py-1.5 text-sm leading-tight rounded-md"
|
||||
@click="openOfferDialog()"
|
||||
>
|
||||
Offer to this (maybe with conditions)...
|
||||
</button>
|
||||
@@ -353,8 +353,8 @@
|
||||
<div v-if="activeDid && isRegistered">
|
||||
<div class="text-center">
|
||||
<button
|
||||
@click="openGiftDialogToProject()"
|
||||
class="block w-full bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-3 py-1.5 text-sm leading-tight rounded-md"
|
||||
@click="openGiftDialogToProject()"
|
||||
>
|
||||
Given To This...
|
||||
</button>
|
||||
@@ -511,8 +511,8 @@
|
||||
<div v-if="activeDid && isRegistered">
|
||||
<div class="text-center">
|
||||
<button
|
||||
@click="openGiftDialogFromProject()"
|
||||
class="block w-full bg-gradient-to-b from-blue-400 to-blue-700 shadow-[inset_0_-1px_0_0_rgba(0,0,0,0.5)] text-white px-3 py-1.5 text-sm leading-tight rounded-md"
|
||||
@click="openGiftDialogFromProject()"
|
||||
>
|
||||
Given By This...
|
||||
</button>
|
||||
|
||||
@@ -239,9 +239,8 @@
|
||||
class="border-b border-slate-300"
|
||||
>
|
||||
<a
|
||||
class="block py-4 flex gap-4"
|
||||
@click="onClickLoadProject(project.handleId)"
|
||||
class="block py-4 flex gap-4 cursor-pointer"
|
||||
@click="onClickLoadProject(project.handleId)"
|
||||
>
|
||||
<div class="flex-none">
|
||||
<ProjectIcon
|
||||
@@ -284,9 +283,8 @@ import {
|
||||
didInfo,
|
||||
getHeaders,
|
||||
getPlanFromCache,
|
||||
OfferSummaryRecord,
|
||||
PlanData,
|
||||
} from "../libs/endorserServer";
|
||||
import { OfferSummaryRecord, PlanData } from "../interfaces/records";
|
||||
import * as libsUtil from "../libs/util";
|
||||
import { OnboardPage } from "../libs/util";
|
||||
import { logger } from "../utils/logger";
|
||||
|
||||
Reference in New Issue
Block a user