From 2959261122f78a6cdc7d8f1e5af06b465f66da4c Mon Sep 17 00:00:00 2001 From: Chris Glein <26607885+chrisglein@users.noreply.github.com> Date: Mon, 27 Mar 2023 16:18:54 -0700 Subject: [PATCH 01/15] Try adding FURN --- .vscode/.react/debuggerWorker.js | 202 ------------ package.json | 1 + yarn.lock | 522 ++++++++++++++++++++++++++++++- 3 files changed, 518 insertions(+), 207 deletions(-) delete mode 100644 .vscode/.react/debuggerWorker.js diff --git a/.vscode/.react/debuggerWorker.js b/.vscode/.react/debuggerWorker.js deleted file mode 100644 index 1a794d4..0000000 --- a/.vscode/.react/debuggerWorker.js +++ /dev/null @@ -1,202 +0,0 @@ - -// Initialize some variables before react-native code would access them -var onmessage=null, self=global; -// Cache Node's original require as __debug__.require -global.__debug__={require: require}; -// Prevent leaking process.versions from debugger process to -// worker because pure React Native doesn't do that and some packages as js-md5 rely on this behavior -Object.defineProperty(process, "versions", { - value: undefined -}); -// TODO: Replace by url.fileURLToPath method when Node 10 LTS become deprecated -function fileUrlToPath(url) { - if (process.platform === 'win32') { - return url.toString().replace('file:///', ''); - } else { - return url.toString().replace('file://', ''); - } -} -function getNativeModules() { - var NativeModules; - try { - // This approach is for old RN versions - NativeModules = global.require('NativeModules'); - } catch (err) { - // ignore error and try another way for more recent RN versions - try { - var nativeModuleId; - var modules = global.__r.getModules(); - var ids = Object.keys(modules); - for (var i = 0; i < ids.length; i++) { - if (modules[ids[i]].verboseName) { - var packagePath = new String(modules[ids[i]].verboseName); - if (packagePath.indexOf('Libraries/BatchedBridge/NativeModules.js') > 0 || packagePath.indexOf('Libraries\\BatchedBridge\\NativeModules.js') > 0) { - nativeModuleId = parseInt(ids[i], 10); - break; - } - } - } - if (nativeModuleId) { - NativeModules = global.__r(nativeModuleId); - } - } - catch (err) { - // suppress errors - } - } - return NativeModules; -} -// Originally, this was made for iOS only -var vscodeHandlers = { - 'vscode_reloadApp': function () { - var NativeModules = getNativeModules(); - if (NativeModules && NativeModules.DevSettings) { - NativeModules.DevSettings.reload(); - } - }, - 'vscode_showDevMenu': function () { - var NativeModules = getNativeModules(); - if (NativeModules && NativeModules.DevMenu) { - NativeModules.DevMenu.show(); - } - } -}; -process.on("message", function (message) { - if (message.data && vscodeHandlers[message.data.method]) { - vscodeHandlers[message.data.method](); - } else if(onmessage) { - onmessage(message); - } -}); -var postMessage = function(message){ - process.send(message); -}; -if (!self.postMessage) { - self.postMessage = postMessage; -} -var importScripts = (function(){ - var fs=require('fs'), vm=require('vm'); - return function(scriptUrl){ - scriptUrl = fileUrlToPath(scriptUrl); - var scriptCode = fs.readFileSync(scriptUrl, 'utf8'); - // Add a 'debugger;' statement to stop code execution - // to wait for the sourcemaps to be processed by the debug adapter - vm.runInThisContext('debugger;' + scriptCode, {filename: scriptUrl}); - }; -})(); - -// Worker is ran as nodejs process, so console.trace() writes to stderr and it leads to error in native app -// To avoid this console.trace() is overridden to print stacktrace via console.log() -// Please, see Node JS implementation: https://github.com/nodejs/node/blob/master/lib/internal/console/constructor.js -console.trace = (function() { - return function() { - try { - var err = { - name: 'Trace', - message: require('util').format.apply(null, arguments) - }; - // Node uses 10, but usually it's not enough for RN app trace - Error.stackTraceLimit = 30; - Error.captureStackTrace(err, console.trace); - console.log(err.stack); - } catch (e) { - console.error(e); - } - }; -})(); - -// As worker is ran in node, it breaks broadcast-channels package approach of identifying if it’s ran in node: -// https://github.com/pubkey/broadcast-channel/blob/master/src/util.js#L64 -// To avoid it if process.toString() is called if will return empty string instead of [object process]. -var nativeObjectToString = Object.prototype.toString; -Object.prototype.toString = function() { - if (this === process) { - return ''; - } else { - return nativeObjectToString.call(this); - } -}; - - -"use strict"; - -/** - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - * - */ - -/* global __fbBatchedBridge, self, importScripts, postMessage, onmessage: true */ -/* eslint no-unused-vars: 0 */ - -onmessage = function () { - var visibilityState; - var showVisibilityWarning = function () { - var hasWarned = false; - return function () { - // Wait until `YellowBox` gets initialized before displaying the warning. - if (hasWarned || console.warn.toString().includes('[native code]')) { - return; - } - hasWarned = true; - console.warn('Remote debugger is in a background tab which may cause apps to ' + 'perform slowly. Fix this by foregrounding the tab (or opening it in ' + 'a separate window).'); - }; - }(); - var messageHandlers = { - executeApplicationScript: function (message, sendReply) { - for (var key in message.inject) { - self[key] = JSON.parse(message.inject[key]); - } - var error; - try { - importScripts(message.url); - } catch (err) { - error = err.message; - } - sendReply(null /* result */, error); - }, - setDebuggerVisibility: function (message) { - visibilityState = message.visibilityState; - } - }; - return function (message) { - if (visibilityState === 'hidden') { - showVisibilityWarning(); - } - var object = message.data; - var sendReply = function (result, error) { - postMessage({ - replyID: object.id, - result: result, - error: error - }); - }; - var handler = messageHandlers[object.method]; - if (handler) { - // Special cased handlers - handler(object, sendReply); - } else { - // Other methods get called on the bridge - var returnValue = [[], [], [], 0]; - var error; - try { - if (typeof __fbBatchedBridge === 'object') { - returnValue = __fbBatchedBridge[object.method].apply(null, object.arguments); - } else { - error = 'Failed to call function, __fbBatchedBridge is undefined'; - } - } catch (err) { - error = err.message; - } finally { - sendReply(JSON.stringify(returnValue), error); - } - } - }; -}(); - -//# sourceMappingURL=debuggerWorker.js.map -// Notify debugger that we're done with loading -// and started listening for IPC messages -postMessage({workerLoaded:true}); \ No newline at end of file diff --git a/package.json b/package.json index 532abed..e930b69 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "postinstall": "patch-package" }, "dependencies": { + "@fluentui/react-native": "^0.36.20", "@react-native-async-storage/async-storage": "^1.17.11", "@react-native-clipboard/clipboard": "^1.12.1", "@react-native-picker/picker": "^2.5.1", diff --git a/yarn.lock b/yarn.lock index 4db89db..27eb4b1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1257,6 +1257,457 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.52.0.tgz#78fe5f117840f69dc4a353adf9b9cd926353378c" integrity sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA== +"@fluentui-react-native/adapters@>=0.10.2 <1.0.0", "@fluentui-react-native/adapters@^0.10.2": + version "0.10.2" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/adapters/-/adapters-0.10.2.tgz#f627969a32bae4fc9921f5904499b3160251a64f" + integrity sha512-dHmPFgnHehkMc1y7UwrHUy+toQciHaD7M2+uHrZREs+O5/mHGHjhMKTrynnt6ZzPFOmvJTc1EnN8+wCTAsPbWg== + +"@fluentui-react-native/button@0.32.48", "@fluentui-react-native/button@^0.32.48": + version "0.32.48" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/button/-/button-0.32.48.tgz#d4925707a8fe2529a888d69af29f2067ad7040f5" + integrity sha512-VJevvzS+5lgay1lvZxeQb51s7ditTcBJ4JuBBS368ofioM1seiMLG5Uai6Gd8Xvoa7D4ErzFk4jmPnW4QYGshQ== + dependencies: + "@fluentui-react-native/adapters" ">=0.10.2 <1.0.0" + "@fluentui-react-native/experimental-activity-indicator" "^0.7.25" + "@fluentui-react-native/experimental-shadow" "0.2.79" + "@fluentui-react-native/framework" "0.9.8" + "@fluentui-react-native/icon" "0.17.24" + "@fluentui-react-native/interactive-hooks" ">=0.22.28 <1.0.0" + "@fluentui-react-native/pressable" ">=0.9.67 <1.0.0" + "@fluentui-react-native/styling-utils" ">=0.4.4 <1.0.0" + "@fluentui-react-native/text" ">=0.19.30 <1.0.0" + "@fluentui-react-native/theme-tokens" ">=0.24.5 <1.0.0" + "@fluentui-react-native/theme-types" ">=0.31.0 <1.0.0" + "@fluentui-react-native/theming-utils" ">=0.23.10 <1.0.0" + "@fluentui-react-native/tokens" ">=0.20.14 <1.0.0" + "@fluentui-react-native/use-styling" ">=0.9.4 <1.0.0" + "@uifabricshared/foundation-composable" ">=0.11.3 <1.0.0" + "@uifabricshared/foundation-compose" "^1.13.8" + "@uifabricshared/foundation-settings" ">=0.12.3 <1.0.0" + tslib "^2.3.1" + +"@fluentui-react-native/callout@0.23.11", "@fluentui-react-native/callout@>=0.23.11 <1.0.0": + version "0.23.11" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/callout/-/callout-0.23.11.tgz#451c06672dcb3b97ae350ad01343cf0b1441ea19" + integrity sha512-RILUYbVExSw2h/1yQoITNfao7nHmBeTwuNsuBHwzBmTtnQhsFHbUc4oBKcsOW1P88Zv1fmFCghUL+apWqTPDiA== + dependencies: + "@fluentui-react-native/adapters" "^0.10.2" + "@fluentui-react-native/component-cache" "^1.4.4" + "@fluentui-react-native/interactive-hooks" ">=0.22.28 <1.0.0" + "@fluentui-react-native/tokens" ">=0.20.14 <1.0.0" + "@uifabricshared/foundation-composable" ">=0.11.3 <1.0.0" + "@uifabricshared/foundation-compose" "^1.13.8" + "@uifabricshared/foundation-settings" ">=0.12.3 <1.0.0" + +"@fluentui-react-native/checkbox@0.19.31": + version "0.19.31" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/checkbox/-/checkbox-0.19.31.tgz#e3a74317c146d790a15b070e1e784341cc59a6d3" + integrity sha512-eSTQM4USQPHYwyYMPkCPf2Dqg9lwdBa9LOhWBvt981urQ8NttMkjbGxOI0mD2R7kYzj8xaaKW0YQ/TmARtpq7Q== + dependencies: + "@fluentui-react-native/adapters" ">=0.10.2 <1.0.0" + "@fluentui-react-native/framework" "0.9.8" + "@fluentui-react-native/interactive-hooks" ">=0.22.28 <1.0.0" + "@fluentui-react-native/pressable" ">=0.9.67 <1.0.0" + "@fluentui-react-native/styling-utils" ">=0.4.4 <1.0.0" + "@fluentui-react-native/text" ">=0.19.30 <1.0.0" + "@fluentui-react-native/theme-tokens" "^0.24.5" + "@fluentui-react-native/theming-utils" ">=0.23.10 <1.0.0" + "@fluentui-react-native/tokens" ">=0.20.14 <1.0.0" + "@fluentui-react-native/use-styling" ">=0.9.4 <1.0.0" + "@uifabricshared/foundation-composable" ">=0.11.3 <1.0.0" + "@uifabricshared/foundation-compose" "^1.13.8" + "@uifabricshared/foundation-settings" ">=0.12.3 <1.0.0" + tslib "^2.3.1" + +"@fluentui-react-native/component-cache@^1.4.4": + version "1.4.4" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/component-cache/-/component-cache-1.4.4.tgz#bec7de8722c90fd4ab2e16c56ae5faa2dee39401" + integrity sha512-f8X5EzMreo5NbO28tfoUwgSJjP7D2dnjHpmX+YtB4cLqPBENNVqm6hum/MZY7zPK1t8tcBv/14swKYi+eVhtpA== + +"@fluentui-react-native/composition@>=0.8.4 <1.0.0": + version "0.8.4" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/composition/-/composition-0.8.4.tgz#7bbb7a1968efd65d605c4e332fbfed4d4ca58664" + integrity sha512-XiYEaHNMYMY8oVpeBI9zpOrosXDoXLvilM6DPh1wPgWPMO8H7O2VWpF2DbqEgRDrUSgSxN26hHdBfKwn6fpw3Q== + dependencies: + "@fluentui-react-native/immutable-merge" "^1.1.8" + "@fluentui-react-native/use-slot" ">=0.3.4 <1.0.0" + "@fluentui-react-native/use-slots" ">=0.7.4 <1.0.0" + "@fluentui-react-native/use-styling" ">=0.9.4 <1.0.0" + +"@fluentui-react-native/contextual-menu@0.21.40", "@fluentui-react-native/contextual-menu@^0.21.40": + version "0.21.40" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/contextual-menu/-/contextual-menu-0.21.40.tgz#d7ddb231e6515fa0af15d58e77777122930f1e2f" + integrity sha512-tth3Y8Y0Yc9SCqna7S1cv57jgdmKQrOSwP0oEh6eGjeBg5moUpEOZKZBT7SqUkUJla1+QEWerEQGRZcgThoY9w== + dependencies: + "@fluentui-react-native/adapters" "^0.10.2" + "@fluentui-react-native/callout" ">=0.23.11 <1.0.0" + "@fluentui-react-native/focus-zone" "^0.11.40" + "@fluentui-react-native/icon" "0.17.24" + "@fluentui-react-native/interactive-hooks" ">=0.22.28 <1.0.0" + "@fluentui-react-native/text" ">=0.19.30 <1.0.0" + "@fluentui-react-native/tokens" ">=0.20.14 <1.0.0" + "@uifabricshared/foundation-composable" ">=0.11.3 <1.0.0" + "@uifabricshared/foundation-compose" "^1.13.8" + "@uifabricshared/foundation-settings" ">=0.12.3 <1.0.0" + +"@fluentui-react-native/default-theme@>=0.18.2 <1.0.0": + version "0.18.2" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/default-theme/-/default-theme-0.18.2.tgz#40df405992f26c751a62208cf855096bc97c88e0" + integrity sha512-b/0ntpW44iIM4zdf5nXLwjhH8uXRHI8P9LNmvrBLCckxGrFuSMLKDr/wtb+6QGzi3vDv1FDn5gi5lR/452l7Ow== + dependencies: + "@fluentui-react-native/memo-cache" "^1.1.8" + "@fluentui-react-native/theme" ">=0.8.3 <1.0.0" + "@fluentui-react-native/theme-tokens" "^0.24.5" + "@fluentui-react-native/theme-types" ">=0.31.0 <1.0.0" + "@fluentui-react-native/theming-utils" ">=0.23.10 <1.0.0" + assert-never "^1.2.1" + +"@fluentui-react-native/design-tokens-android@^0.43.0": + version "0.43.0" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/design-tokens-android/-/design-tokens-android-0.43.0.tgz#e8dbd668ff86716d11c37a93408f721e88bf64e3" + integrity sha512-33W/1MRSYW8fKHHBcf0XsZp551thsY1tV40WclNai0JZW0er7CwBx4+s1/Vv2VSm6MVFotQjAFGmyQaVDzKpqQ== + +"@fluentui-react-native/design-tokens-ios@^0.42.0": + version "0.42.0" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/design-tokens-ios/-/design-tokens-ios-0.42.0.tgz#3639e67b7749a504e6b27215d31257f469f460bd" + integrity sha512-qAvVfQtrpx71B0RM7W2I8BazBlYWIXExmcCqSvBoUhRlNCfKSLz4Ry1cecm1ldtEnykhnMTYrNtBwzRJ/99CEA== + +"@fluentui-react-native/design-tokens-win32@^0.42.0": + version "0.42.0" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/design-tokens-win32/-/design-tokens-win32-0.42.0.tgz#b67bc3474bcaab4aa69affcb297b37999379b29c" + integrity sha512-JU5HH2XmM2qhgqS4Onws1Wq6zgt9L+WEllXAwq0/QEeiLciKWlF4PQ5WIcxqFfrvTeC4ogImuslMAbsHeTSI9Q== + +"@fluentui-react-native/design-tokens-windows@^0.42.0": + version "0.42.0" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/design-tokens-windows/-/design-tokens-windows-0.42.0.tgz#6b7ca87ed30a92634e72cbe8fc1280fd21db50b8" + integrity sha512-hBPCikSDJ3Rgw+mAbTgnNB83dn3SeSKPo4XNli22tbV08fN8P5mEaEg8Uw0cbVMN3D138ykNeAaK/lZjO9KIqA== + +"@fluentui-react-native/experimental-activity-indicator@^0.7.25": + version "0.7.25" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/experimental-activity-indicator/-/experimental-activity-indicator-0.7.25.tgz#6598077832335761e2679bd5773a8b2f1a6e9e16" + integrity sha512-QWfrDNQGx2CufdreUVLvDzJp5KMYqQtZXWuRlLV86Fwd6gMZMjy9Zj5isSaMjCgqEklu0HRPb7+Eh6d6sA6E2g== + dependencies: + "@fluentui-react-native/framework" "0.9.8" + assert-never "^1.2.1" + +"@fluentui-react-native/experimental-native-font-metrics@^0.3.2": + version "0.3.2" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/experimental-native-font-metrics/-/experimental-native-font-metrics-0.3.2.tgz#243fce5cd864b937090dbadce6fa1b4bd729a4b5" + integrity sha512-jxJRYNU3pVWMLteqlJkPlD+Cdg60mG98lrLYSQw91B7hHFuKOd0FzXeYlf8D0NZPAI93VdJ54WFB7OFnkmF2jQ== + +"@fluentui-react-native/experimental-shadow@0.2.79": + version "0.2.79" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/experimental-shadow/-/experimental-shadow-0.2.79.tgz#3c46728e3669bc922ea9f19ec88e33483197e7c2" + integrity sha512-oqs8M8TIL1BxeE61+sR1nlh+9WSJ9Z7YzGSU8YwV+tjHmSMcN52SSUoyZu8PZtD0IezXJ1dHMolAvHZEhSgkVQ== + dependencies: + "@fluentui-react-native/framework" "0.9.8" + "@fluentui-react-native/pressable" "0.9.67" + "@fluentui-react-native/theme-types" "0.31.0" + +"@fluentui-react-native/focus-trap-zone@0.9.69": + version "0.9.69" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/focus-trap-zone/-/focus-trap-zone-0.9.69.tgz#3ad4c260a9f112784b0ea85fbd81296fc16e6bb7" + integrity sha512-D0eHTuBgGwci27phZH4PIMxeE4o8mADVrZMgecGNTMuogtigMu70P6H+ThPoI0d4zTo+KaYCciCDjzw0zn0DRQ== + dependencies: + "@fluentui-react-native/adapters" ">=0.10.2 <1.0.0" + "@fluentui-react-native/component-cache" "^1.4.4" + "@fluentui-react-native/interactive-hooks" ">=0.22.28 <1.0.0" + "@uifabricshared/foundation-composable" ">=0.11.3 <1.0.0" + "@uifabricshared/foundation-settings" ">=0.12.3 <1.0.0" + +"@fluentui-react-native/focus-zone@0.11.40", "@fluentui-react-native/focus-zone@>=0.11.40 <1.0.0", "@fluentui-react-native/focus-zone@^0.11.40": + version "0.11.40" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/focus-zone/-/focus-zone-0.11.40.tgz#6cb5060f44b18e9c417fd371cda472310e748d93" + integrity sha512-rYOppDJt3vbgJwrkwDh3or0N4pWuK3UkzlWgtPgew57cE7VDksulAs75GEicmc6al4BjETlVlDmBWRtPgY3yBQ== + dependencies: + "@fluentui-react-native/component-cache" "^1.4.4" + "@fluentui-react-native/interactive-hooks" ">=0.22.28 <1.0.0" + "@uifabricshared/foundation-composable" ">=0.11.3 <1.0.0" + "@uifabricshared/foundation-settings" ">=0.12.3 <1.0.0" + +"@fluentui-react-native/framework@0.9.8", "@fluentui-react-native/framework@>=0.9.8 <1.0.0": + version "0.9.8" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/framework/-/framework-0.9.8.tgz#0a50c7683e94756a7e9bd2eaec7a6ab61dfdbdca" + integrity sha512-0Jv8PQl0qDtdWk+m9NYgddGxtAKyW5BvuH6fzjJaBDp8o8jUDn9tVWc9C+pw4+SXs40AHO74OfAGib4R1XRfFQ== + dependencies: + "@fluentui-react-native/composition" ">=0.8.4 <1.0.0" + "@fluentui-react-native/default-theme" ">=0.18.2 <1.0.0" + "@fluentui-react-native/immutable-merge" "^1.1.8" + "@fluentui-react-native/memo-cache" "^1.1.8" + "@fluentui-react-native/merge-props" ">=0.5.3 <1.0.0" + "@fluentui-react-native/theme-types" ">=0.31.0 <1.0.0" + "@fluentui-react-native/tokens" ">=0.20.14 <1.0.0" + "@fluentui-react-native/use-slot" ">=0.3.4 <1.0.0" + "@fluentui-react-native/use-slots" ">=0.7.4 <1.0.0" + "@fluentui-react-native/use-styling" ">=0.9.4 <1.0.0" + "@fluentui-react-native/use-tokens" ">=0.3.4 <1.0.0" + tslib "^2.3.1" + +"@fluentui-react-native/icon@0.17.24", "@fluentui-react-native/icon@^0.17.24": + version "0.17.24" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/icon/-/icon-0.17.24.tgz#c1568002afed271b4e7d7e031cf17b4f20445693" + integrity sha512-rWxql3lqQ8Fr/nGyWLAXFEfjp205nSYbLsrDttV04CCm9Wdn67a4/RD5KD65aYEqC6fH4UVuYxx9mO3kdPTa7A== + dependencies: + "@fluentui-react-native/adapters" "^0.10.2" + "@fluentui-react-native/framework" ">=0.9.8 <1.0.0" + "@fluentui-react-native/text" "^0.19.30" + +"@fluentui-react-native/immutable-merge@^1.1.8": + version "1.1.8" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/immutable-merge/-/immutable-merge-1.1.8.tgz#9de28bec1667f3d3cc84ea356c36b3bfd6bdabf4" + integrity sha512-UpBGLQyt13oDa+z5SFv7cqvnRgf1eoUhFDzX8LIZEs7OnpOIAmPSOD0F52UhTmGCmDi726v3j4Js/IFmMZiosg== + dependencies: + tslib "^2.3.1" + +"@fluentui-react-native/interactive-hooks@0.22.28", "@fluentui-react-native/interactive-hooks@>=0.22.28 <1.0.0": + version "0.22.28" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/interactive-hooks/-/interactive-hooks-0.22.28.tgz#9c2971cad31556eb7a04b81ce76f26a57f3d885c" + integrity sha512-ZUj7cEoc1iZQOReazF5wkl6ZpyWkEHXzsGYtJ+ovxD59o6V6hnCFaGfOnFEa9RJ6FJvJSmTDMWaxj20AK/fpng== + dependencies: + "@fluentui-react-native/adapters" "^0.10.2" + "@fluentui-react-native/framework" ">=0.9.8 <1.0.0" + "@fluentui-react-native/memo-cache" "^1.1.8" + invariant "^2.2.0" + tslib "^2.3.1" + +"@fluentui-react-native/link@0.18.25": + version "0.18.25" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/link/-/link-0.18.25.tgz#c359d066363289fc71c24e76f95611a1e6883fc7" + integrity sha512-oXTtjtMHN8odaOrYctErttKMhEXhRHM4grjCcFX2OgXyPHntB8d0tQr/0ZIESMKZMQW1cDvKfIUAEae5VP4bgQ== + dependencies: + "@fluentui-react-native/adapters" ">=0.10.2 <1.0.0" + "@fluentui-react-native/framework" ">=0.9.8 <1.0.0" + "@fluentui-react-native/interactive-hooks" ">=0.22.28 <1.0.0" + "@fluentui-react-native/text" ">=0.19.30 <1.0.0" + "@fluentui-react-native/tokens" ">=0.20.14 <1.0.0" + "@fluentui-react-native/use-styling" "^0.9.4" + "@uifabricshared/foundation-composable" ">=0.11.3 <1.0.0" + "@uifabricshared/foundation-compose" "^1.13.8" + "@uifabricshared/foundation-settings" ">=0.12.3 <1.0.0" + tslib "^2.3.1" + +"@fluentui-react-native/memo-cache@^1.1.8": + version "1.1.8" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/memo-cache/-/memo-cache-1.1.8.tgz#46cf0a45bc76aa5443ac2b88b920f31418cff725" + integrity sha512-Yx8MNMY3xlw2U+mfzkWbOPxmRV4yOwLuJOULcmwrISDwO1wdaiFrEUnKrWMx3ouroCwGWpqBxeDaYJJTEL7G0g== + +"@fluentui-react-native/menu-button@0.10.47": + version "0.10.47" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/menu-button/-/menu-button-0.10.47.tgz#62b042f6c5bee7e51cd6591c1639688ef9d3a8aa" + integrity sha512-rIsF1eILHF50whGa+KvyVX0cCiOOgktZqiRJgoFcgVFmQ/2uN75HzxNr5YR0nEa7U4Fq3z6oQReTmzWeoADHvg== + dependencies: + "@fluentui-react-native/button" "^0.32.48" + "@fluentui-react-native/component-cache" "^1.4.4" + "@fluentui-react-native/contextual-menu" "^0.21.40" + "@fluentui-react-native/icon" "^0.17.24" + "@fluentui-react-native/tokens" "^0.20.14" + "@uifabricshared/foundation-composable" ">=0.11.3 <1.0.0" + "@uifabricshared/foundation-compose" "^1.13.8" + "@uifabricshared/foundation-settings" ">=0.12.3 <1.0.0" + +"@fluentui-react-native/merge-props@>=0.5.3 <1.0.0": + version "0.5.3" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/merge-props/-/merge-props-0.5.3.tgz#8ea1686daf973807a089f5c541a0c7ce800046fc" + integrity sha512-XMVNaLaDIKLPFveV+3G4d6F/8bNt8H9IJUmGwbI3q9WTtXh1tmPzQyBKeNFf2vuNQELhkp9bB4QX/fNITvjplA== + dependencies: + "@fluentui-react-native/immutable-merge" "^1.1.8" + "@fluentui-react-native/memo-cache" "^1.1.8" + tslib "^2.3.1" + +"@fluentui-react-native/persona-coin@0.12.30", "@fluentui-react-native/persona-coin@>=0.12.30 <1.0.0": + version "0.12.30" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/persona-coin/-/persona-coin-0.12.30.tgz#e9cb5d9f97ba6a272ef860f25909501cb8d10e34" + integrity sha512-7KpgWBRFfbRlI1jiO9+MmjT1NfdnosTO/K+JWNlwadY6FYDm01g+X6jjd2E2qBsFuvBKYcex3DEei/7+NPUHyA== + dependencies: + "@fluentui-react-native/adapters" ">=0.10.2 <1.0.0" + "@fluentui-react-native/framework" ">=0.9.8 <1.0.0" + "@fluentui-react-native/theme-tokens" ">=0.24.5 <1.0.0" + "@fluentui-react-native/tokens" ">=0.20.14 <1.0.0" + "@uifabricshared/foundation-composable" ">=0.11.3 <1.0.0" + "@uifabricshared/foundation-compose" "^1.13.8" + "@uifabricshared/foundation-settings" ">=0.12.3 <1.0.0" + "@uifabricshared/foundation-tokens" ">=0.12.31 <1.0.0" + +"@fluentui-react-native/persona@0.13.49": + version "0.13.49" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/persona/-/persona-0.13.49.tgz#36df355627a559999f30f3b6ed60d0edcee04a89" + integrity sha512-a2PIwjx93bSNihQ/sHJONh287PZ71/iEjK47PAnR1CUx89Hbr7qJ3oB5Fpg42DuAfPmEHVbIq2W6oNBl2yqprQ== + dependencies: + "@fluentui-react-native/adapters" ">=0.10.2 <1.0.0" + "@fluentui-react-native/framework" ">=0.9.8 <1.0.0" + "@fluentui-react-native/persona-coin" ">=0.12.30 <1.0.0" + "@fluentui-react-native/tokens" ">=0.20.14 <1.0.0" + "@uifabricshared/foundation-composable" ">=0.11.3 <1.0.0" + "@uifabricshared/foundation-compose" "^1.13.8" + "@uifabricshared/foundation-settings" ">=0.12.3 <1.0.0" + "@uifabricshared/foundation-tokens" ">=0.12.31 <1.0.0" + +"@fluentui-react-native/pressable@0.9.67", "@fluentui-react-native/pressable@>=0.9.67 <1.0.0": + version "0.9.67" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/pressable/-/pressable-0.9.67.tgz#8459cd38748304a0edbed8fc0a92129ca29b3793" + integrity sha512-s0rpO5HBHicCKmDl0cvUFb9X7hrk/S0n8OSezJmi2CHtTrWKF5bdU5/zC1TSM9dM2/BtxqPDpQcOrzriX3O0Uw== + dependencies: + "@fluentui-react-native/adapters" ">=0.10.2 <1.0.0" + "@fluentui-react-native/interactive-hooks" ">=0.22.28 <1.0.0" + "@uifabricshared/foundation-composable" ">=0.11.3 <1.0.0" + "@uifabricshared/foundation-settings" ">=0.12.3 <1.0.0" + +"@fluentui-react-native/radio-group@0.16.44": + version "0.16.44" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/radio-group/-/radio-group-0.16.44.tgz#01cb98e87cd52a86a1651cc3db7bb73398d0b3d4" + integrity sha512-G0F809qh60J37yoOJIf6FZzShyqfJmUI1IOJN9o1wSmsnX/9F1Z/zPahuiH0/fDEfiY/CHepZholuTrXPumuYw== + dependencies: + "@fluentui-react-native/adapters" ">=0.10.2 <1.0.0" + "@fluentui-react-native/component-cache" "^1.4.4" + "@fluentui-react-native/focus-zone" ">=0.11.40 <1.0.0" + "@fluentui-react-native/interactive-hooks" ">=0.22.28 <1.0.0" + "@fluentui-react-native/pressable" ">=0.9.67 <1.0.0" + "@fluentui-react-native/text" ">=0.19.30 <1.0.0" + "@fluentui-react-native/tokens" ">=0.20.14 <1.0.0" + "@uifabricshared/foundation-composable" ">=0.11.3 <1.0.0" + "@uifabricshared/foundation-compose" "^1.13.8" + "@uifabricshared/foundation-settings" ">=0.12.3 <1.0.0" + +"@fluentui-react-native/separator@0.14.22": + version "0.14.22" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/separator/-/separator-0.14.22.tgz#727b011c7efe00797e1c7e36609aae42192e04c1" + integrity sha512-++Fn2SPaHW0ePQsH55L8FwaOpp/9p+ViFP7+QM2jJcBp2TMRX6lhDw2eYhXYfQrdc2Kg+3ElL/q8t7QHxdTIWw== + dependencies: + "@fluentui-react-native/framework" ">=0.9.8 <1.0.0" + "@fluentui-react-native/theme-tokens" "^0.24.5" + "@fluentui-react-native/use-styling" "^0.9.4" + +"@fluentui-react-native/styling-utils@>=0.4.4 <1.0.0": + version "0.4.4" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/styling-utils/-/styling-utils-0.4.4.tgz#6f636a4c7f8532df84548754f82132f638aaf7db" + integrity sha512-hlzf6lv0errJpjkE9UogW3YVc6owNuqoyHTuGEb4Xp1IXTE2eiH9+Y+5U8bFn+kjuT2Bihb92UNZE1teonOs6A== + +"@fluentui-react-native/tabs@0.11.44": + version "0.11.44" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/tabs/-/tabs-0.11.44.tgz#7a146dbafc739e9af14712176885c03ef3c9b62d" + integrity sha512-FIFPHbpz9U9cVTK3ko3I51EEWhcb5OMvM33sUEW3KQ+ZM/6BwBb0KtK0m+SxHHAhFmkPHIlqH3d4yzS1je5AXA== + dependencies: + "@fluentui-react-native/adapters" ">=0.10.2 <1.0.0" + "@fluentui-react-native/focus-zone" ">=0.11.40 <1.0.0" + "@fluentui-react-native/icon" "0.17.24" + "@fluentui-react-native/interactive-hooks" ">=0.22.28 <1.0.0" + "@fluentui-react-native/text" ">=0.19.30 <1.0.0" + "@fluentui-react-native/tokens" ">=0.20.14 <1.0.0" + "@uifabricshared/foundation-composable" ">=0.11.3 <1.0.0" + "@uifabricshared/foundation-compose" "^1.13.8" + "@uifabricshared/foundation-settings" ">=0.12.3 <1.0.0" + +"@fluentui-react-native/text@0.19.30", "@fluentui-react-native/text@>=0.19.30 <1.0.0", "@fluentui-react-native/text@^0.19.30": + version "0.19.30" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/text/-/text-0.19.30.tgz#e4d5b44f24b41ed2a75e7ad40ccd122e093242d7" + integrity sha512-tB8EL9xG3c7NcdF2tQo7PJ6QzmNqecFLtL4cuWaBMfH81p5AB92uxtDfGeX5Pyx97KDB8M+DlyIhpLzB6veOCA== + dependencies: + "@fluentui-react-native/adapters" ">=0.10.2 <1.0.0" + "@fluentui-react-native/experimental-native-font-metrics" "^0.3.2" + "@fluentui-react-native/framework" "0.9.8" + "@fluentui-react-native/interactive-hooks" ">=0.22.28 <1.0.0" + "@fluentui-react-native/theme-tokens" ">=0.24.5 <1.0.0" + "@fluentui-react-native/tokens" ">=0.20.14 <1.0.0" + "@uifabricshared/foundation-compose" "^1.13.8" + tslib "^2.3.1" + +"@fluentui-react-native/theme-tokens@>=0.24.5 <1.0.0", "@fluentui-react-native/theme-tokens@^0.24.5": + version "0.24.5" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/theme-tokens/-/theme-tokens-0.24.5.tgz#a8753cef4e49952636a004d987f33c5c400e4d2f" + integrity sha512-oJqa7QxoLBkpZfBtkZ0/gNNTrrE/O9I0wOshmKRgnN8vkmGKFkgsGT2G2eoYexYOdblKy3TpHBOxoPdZp4vWZg== + dependencies: + "@fluentui-react-native/design-tokens-android" "^0.43.0" + "@fluentui-react-native/design-tokens-ios" "^0.42.0" + "@fluentui-react-native/design-tokens-win32" "^0.42.0" + "@fluentui-react-native/design-tokens-windows" "^0.42.0" + "@fluentui-react-native/theme-types" ">=0.31.0 <1.0.0" + assert-never "^1.2.1" + +"@fluentui-react-native/theme-types@0.31.0", "@fluentui-react-native/theme-types@>=0.31.0 <1.0.0": + version "0.31.0" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/theme-types/-/theme-types-0.31.0.tgz#6ebd513446e4be469733a7bd6925a654ae489bf9" + integrity sha512-/FdcYnmk/UxpPWDAM7m5luQzs+PoisJ7MVkPY76MO65p4ccPkDww6h6R69Loy5ZJtw4JVCEdG8oLSYG0R8uMYg== + +"@fluentui-react-native/theme@>=0.8.3 <1.0.0": + version "0.8.3" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/theme/-/theme-0.8.3.tgz#236d037ad72bb067d5f893aed9c3c676dc1a61a8" + integrity sha512-0BqCwVhrlNBlS/OnAHO8hIStgSoRv4R4BB9MURX8hVNGuD8wIpa5PDRxmDgK8Ktn8mM9g/ZhO4LNnVpr2y0xzA== + dependencies: + "@fluentui-react-native/immutable-merge" "^1.1.8" + "@fluentui-react-native/theme-types" ">=0.31.0 <1.0.0" + +"@fluentui-react-native/theming-utils@>=0.23.10 <1.0.0": + version "0.23.10" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/theming-utils/-/theming-utils-0.23.10.tgz#620c4938409042bac62bd87027766a06ff69760f" + integrity sha512-4iVnjT0QjN68x3A8stv1abwyRyflkzueWMXCgqLnrpOHCeR+g3RjexTw5r/0MM0an6t7FL52j6KV8T2YWohDJw== + dependencies: + "@fluentui-react-native/theme-types" ">=0.31.0 <1.0.0" + "@fluentui-react-native/tokens" ">=0.20.14 <1.0.0" + +"@fluentui-react-native/tokens@0.20.14", "@fluentui-react-native/tokens@>=0.20.14 <1.0.0", "@fluentui-react-native/tokens@^0.20.14": + version "0.20.14" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/tokens/-/tokens-0.20.14.tgz#e7cdb4487a5fcd7f37c801eefbefa8a31287f98e" + integrity sha512-iCtqpN6JKBxS5/k36S7DKq+JHPrIa5nlbQiitMWfm7zn3PC24KmWHI3iB1RLT43h1m1A4prJu/biBh55ibjNjQ== + dependencies: + "@fluentui-react-native/adapters" ">=0.10.2 <1.0.0" + "@fluentui-react-native/theme-types" ">=0.31.0 <1.0.0" + tslib "^2.3.1" + +"@fluentui-react-native/use-slot@>=0.3.4 <1.0.0": + version "0.3.4" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/use-slot/-/use-slot-0.3.4.tgz#b06a281587041245383e642acd50fa279cf08648" + integrity sha512-mvyYgmHFlRQ20EylZygHlI+Q2LnZV27IMsVxlG435kBF/TF1Vtch6VqpdtWX9srDdDEMgGmgO7Er95Y3Wa4/eg== + dependencies: + "@fluentui-react-native/merge-props" ">=0.5.3 <1.0.0" + tslib "^2.3.1" + +"@fluentui-react-native/use-slots@>=0.7.4 <1.0.0": + version "0.7.4" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/use-slots/-/use-slots-0.7.4.tgz#5005aeed9963cd3ff264531f675bbeb4430704fe" + integrity sha512-hOhUpUrsT7kxFik7xxyDC3WmupOC7eOxVjhSYxltim3qTcTwR7GiC6WyJbh7nfovtwL3fA3rOUxYFDy+/1lIcg== + dependencies: + "@fluentui-react-native/use-slot" ">=0.3.4 <1.0.0" + +"@fluentui-react-native/use-styling@>=0.9.4 <1.0.0", "@fluentui-react-native/use-styling@^0.9.4": + version "0.9.4" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/use-styling/-/use-styling-0.9.4.tgz#302f9018c0d7580490e8b8099f57944e7695df9e" + integrity sha512-6cI7vIelb59hFwFsu4Pj7k4ig5RU5jJmsBWRaWa2jL4gKwFn4z9NOhD5sq9QoIPfhSpsiHWbQZUwublVTiu3RQ== + dependencies: + "@fluentui-react-native/memo-cache" "^1.1.8" + "@fluentui-react-native/use-tokens" "^0.3.4" + tslib "^2.3.1" + +"@fluentui-react-native/use-tokens@>=0.3.4 <1.0.0", "@fluentui-react-native/use-tokens@^0.3.4": + version "0.3.4" + resolved "https://registry.yarnpkg.com/@fluentui-react-native/use-tokens/-/use-tokens-0.3.4.tgz#19712a4596f31a36bd7f73a5146f62ce46d6e979" + integrity sha512-P672zu1ZVjp+dZfdZSIcZYxP1lXGsAShj3YBebSNUqTuMRo5zEAoIDYhtmviDnTnZC1TPlxzGyP+Z2kykzmyWw== + dependencies: + "@fluentui-react-native/immutable-merge" "^1.1.8" + "@fluentui-react-native/memo-cache" "^1.1.8" + tslib "^2.3.1" + +"@fluentui/react-native@^0.36.20": + version "0.36.20" + resolved "https://registry.yarnpkg.com/@fluentui/react-native/-/react-native-0.36.20.tgz#71750c0d76649b7520837df97a8dc05b711338e4" + integrity sha512-LB/HA4RsbqK/aDuGSDds0I5TkLhUzpKEce/HEDny+p9pTdf9Sq1vZtu57ApEhf5pFiYikh1/uIywzfzZDf4bmA== + dependencies: + "@fluentui-react-native/button" "0.32.48" + "@fluentui-react-native/callout" "0.23.11" + "@fluentui-react-native/checkbox" "0.19.31" + "@fluentui-react-native/contextual-menu" "0.21.40" + "@fluentui-react-native/focus-trap-zone" "0.9.69" + "@fluentui-react-native/focus-zone" "0.11.40" + "@fluentui-react-native/interactive-hooks" "0.22.28" + "@fluentui-react-native/link" "0.18.25" + "@fluentui-react-native/menu-button" "0.10.47" + "@fluentui-react-native/persona" "0.13.49" + "@fluentui-react-native/persona-coin" "0.12.30" + "@fluentui-react-native/pressable" "0.9.67" + "@fluentui-react-native/radio-group" "0.16.44" + "@fluentui-react-native/separator" "0.14.22" + "@fluentui-react-native/tabs" "0.11.44" + "@fluentui-react-native/text" "0.19.30" + "@hapi/hoek@^9.0.0": version "9.3.0" resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb" @@ -2686,6 +3137,62 @@ "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" +"@uifabricshared/foundation-composable@>=0.11.3 <1.0.0": + version "0.11.3" + resolved "https://registry.yarnpkg.com/@uifabricshared/foundation-composable/-/foundation-composable-0.11.3.tgz#6502054a6faa4e1ec3fbebf79478f7f21e243196" + integrity sha512-tUrV4ti4fi8YEEn/VYPbdY9nlpuduIa3jajmU6M3wTAReqyp/sa2h/ix8pKu/uyJAE2Wb/zGrEfyLZS+ANxT5A== + dependencies: + "@fluentui-react-native/merge-props" ">=0.5.3 <1.0.0" + "@uifabricshared/foundation-settings" ">=0.12.3 <1.0.0" + +"@uifabricshared/foundation-compose@^1.13.8": + version "1.13.8" + resolved "https://registry.yarnpkg.com/@uifabricshared/foundation-compose/-/foundation-compose-1.13.8.tgz#f5c06aff24a5a5aed6f61c587d088708977fe86d" + integrity sha512-qNYgv+r0hJjAItly2Mwm/JH7meA4a+m4q0MnS5UetYm85hF1u968IkFuPtSbWh1mYgTQOnrbBJgTpAXbtyH/Kw== + dependencies: + "@fluentui-react-native/default-theme" ">=0.18.2 <1.0.0" + "@fluentui-react-native/immutable-merge" "^1.1.8" + "@fluentui-react-native/memo-cache" "^1.1.8" + "@fluentui-react-native/theme-types" ">=0.31.0 <1.0.0" + "@uifabricshared/foundation-composable" ">=0.11.3 <1.0.0" + "@uifabricshared/foundation-settings" ">=0.12.3 <1.0.0" + "@uifabricshared/foundation-tokens" ">=0.12.31 <1.0.0" + "@uifabricshared/themed-settings" ">=0.9.3 <1.0.0" + "@uifabricshared/theming-ramp" ">=0.17.22 <1.0.0" + +"@uifabricshared/foundation-settings@>=0.12.3 <1.0.0": + version "0.12.3" + resolved "https://registry.yarnpkg.com/@uifabricshared/foundation-settings/-/foundation-settings-0.12.3.tgz#8ae0a4d9f0fcae4d308d05a1a147eda2bf3e2997" + integrity sha512-si0cZXgAByTMD4tEHLHQNRzjjJgkW0EZ0WPh9JuAVES6Em3uuRsrmPu3b3Cl3XnXi6P0drcTCK/cEFEkBj718A== + dependencies: + "@fluentui-react-native/immutable-merge" "^1.1.8" + "@fluentui-react-native/merge-props" ">=0.5.3 <1.0.0" + +"@uifabricshared/foundation-tokens@>=0.12.31 <1.0.0": + version "0.12.31" + resolved "https://registry.yarnpkg.com/@uifabricshared/foundation-tokens/-/foundation-tokens-0.12.31.tgz#1c858b0b257b6a68b06d88e9eac8d61c7c245fd8" + integrity sha512-XJL4lfLGotQtasjk1kGjnL6YgYP883G6ULIa5aqcf63xt6ynRGNclRfwPCGD/uaTILtAU9GgLT41ZIYobfbrqA== + dependencies: + "@fluentui-react-native/merge-props" ">=0.5.3 <1.0.0" + "@fluentui-react-native/tokens" "0.20.14" + "@uifabricshared/foundation-settings" ">=0.12.3 <1.0.0" + +"@uifabricshared/themed-settings@>=0.9.3 <1.0.0": + version "0.9.3" + resolved "https://registry.yarnpkg.com/@uifabricshared/themed-settings/-/themed-settings-0.9.3.tgz#18a29feb90b4308ae94407e4c807b34f243495e6" + integrity sha512-hXMdbP1imuUSn7THzTeDrOpN28ivIfaUP6RvgwemtoPtFLqsfej+Eu5zb2pmRQQfOdXF8qVbhI4OBTAI0dcOjA== + dependencies: + "@uifabricshared/foundation-settings" ">=0.12.3 <1.0.0" + +"@uifabricshared/theming-ramp@>=0.17.22 <1.0.0": + version "0.17.22" + resolved "https://registry.yarnpkg.com/@uifabricshared/theming-ramp/-/theming-ramp-0.17.22.tgz#0b305ee94bf8407585f895c19cad8e271545c0b2" + integrity sha512-JH+uE1xbEq4p2KAiUm6ZmBID3zMwC6a+NChiKOeiSpuFqBkXSFxFHG9cTI7wYZ783+o103wirP2bQLNt3mT7ww== + dependencies: + "@fluentui-react-native/immutable-merge" "^1.1.8" + "@fluentui-react-native/theme-types" ">=0.31.0 <1.0.0" + "@uifabricshared/foundation-settings" ">=0.12.3 <1.0.0" + "@ungap/structured-clone@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" @@ -2927,6 +3434,11 @@ asap@~2.0.6: resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== +assert-never@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/assert-never/-/assert-never-1.2.1.tgz#11f0e363bf146205fb08193b5c7b90f4d1cf44fe" + integrity sha512-TaTivMB6pYI1kXwrFlEhLeGfOqoDNdTxjCdwRfFFkEA30Eu+k48W34nlok2EYWJfFFzqaEmichdNM7th6M5HNw== + ast-types@0.15.2: version "0.15.2" resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.15.2.tgz#39ae4809393c4b16df751ee563411423e85fb49d" @@ -4809,7 +5321,7 @@ interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== -invariant@*, invariant@^2.2.4: +invariant@*, invariant@^2.2.0, invariant@^2.2.4: version "2.2.4" resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA== @@ -7969,10 +8481,10 @@ tslib@^1.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.1, tslib@^2.2.0: - version "2.6.2" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" - integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q== +tslib@^2.0.1, tslib@^2.2.0, tslib@^2.3.1: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.5.0.tgz#42bfed86f5787aeb41d031866c8f402429e0fddf" + integrity sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg== tsutils@^3.21.0: version "3.21.0" From d030a508f09fd56c739adc9efd0ab050b3393b82 Mon Sep 17 00:00:00 2001 From: Chris Glein <26607885+chrisglein@users.noreply.github.com> Date: Thu, 30 Mar 2023 17:38:51 -0700 Subject: [PATCH 02/15] Add fluent-ui-react-native controls - Allows use of their Button type - Required importing SVG (see https://github.com/microsoft/fluentui-react-native/issues/2613) - Which in turn requires importing the Win2D nuget - Also required switching to classic runtime (see https://github.com/microsoft/fluentui-react-native/issues/1891) --- babel.config.js | 3 +- package.json | 1 + src/Chat.tsx | 17 ++-- src/Settings.tsx | 1 + windows/artificialChat.sln | 14 ++++ .../AutolinkedNativeModules.g.cpp | 5 ++ .../AutolinkedNativeModules.g.targets | 4 + windows/artificialChat/artificialChat.vcxproj | 1 + windows/artificialChat/packages.config | 1 + windows/artificialChat/packages.lock.json | 48 +++++++++++ yarn.lock | 84 +++++++++++++++++++ 11 files changed, 170 insertions(+), 9 deletions(-) diff --git a/babel.config.js b/babel.config.js index f7b3da3..1be3da9 100644 --- a/babel.config.js +++ b/babel.config.js @@ -1,3 +1,4 @@ module.exports = { - presets: ['module:@react-native/babel-preset'], + presets: [['module:metro-react-native-babel-preset', {useTransformReactJSXExperimental:true}]], + plugins: [['@babel/plugin-transform-react-jsx', { runtime: 'classic' }]] }; diff --git a/package.json b/package.json index e930b69..5449aa4 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "react-native": "0.73.0-rc.1", "react-native-content-dialog": "^0.2.0", "react-native-markdown-display-updated": "^7.0.0", + "react-native-svg": "^13.9.0", "react-native-syntax-highlighter": "^2.1.0", "react-native-windows": "0.73.10" }, diff --git a/src/Chat.tsx b/src/Chat.tsx index 4f52245..26ddf0c 100644 --- a/src/Chat.tsx +++ b/src/Chat.tsx @@ -1,6 +1,5 @@ import React from 'react'; import { - Button, ScrollView, TextInput, View, @@ -15,6 +14,7 @@ import { } from './Feedback'; import { PopupsContext } from './Popups'; import { HoverButton } from './Controls'; +import { ButtonV1 as Button } from '@fluentui/react-native'; enum ChatSource { Human, @@ -86,13 +86,15 @@ function ChatEntry({submit, defaultText, clearConversation}: ChatEntryProps): JS onSubmitEditing={submitValue} value={defaultText ?? value}/> ); } @@ -170,11 +172,10 @@ function Chat({entries, humanText, onPrompt, clearConversation}: ChatProps): JSX } diff --git a/src/Settings.tsx b/src/Settings.tsx index 0318dfa..16e028a 100644 --- a/src/Settings.tsx +++ b/src/Settings.tsx @@ -16,6 +16,7 @@ import {StylesContext} from './Styles'; import {Picker} from '@react-native-picker/picker'; import {ChatScriptNames} from './ChatScript'; import AsyncStorage from '@react-native-async-storage/async-storage'; +import { ButtonV1 as Button } from '@fluentui/react-native'; const settingsKey = 'settings'; diff --git a/windows/artificialChat.sln b/windows/artificialChat.sln index 776ba48..18d1a57 100644 --- a/windows/artificialChat.sln +++ b/windows/artificialChat.sln @@ -39,6 +39,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Clipboard", "..\node_module EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ReactNativeAsyncStorage", "..\node_modules\@react-native-async-storage\async-storage\windows\ReactNativeAsyncStorage\ReactNativeAsyncStorage.vcxproj", "{4855D892-E16C-404D-8286-0089E0F7F9C4}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RNSVG", "..\node_modules\react-native-svg\windows\RNSVG\RNSVG.vcxproj", "{7ACF84EC-EFBA-4043-8E14-40B159508902}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|ARM64 = Debug|ARM64 @@ -165,6 +167,18 @@ Global {4855D892-E16C-404D-8286-0089E0F7F9C4}.Release|x64.Build.0 = Release|x64 {4855D892-E16C-404D-8286-0089E0F7F9C4}.Release|x86.ActiveCfg = Release|Win32 {4855D892-E16C-404D-8286-0089E0F7F9C4}.Release|x86.Build.0 = Release|Win32 + {7ACF84EC-EFBA-4043-8E14-40B159508902}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {7ACF84EC-EFBA-4043-8E14-40B159508902}.Debug|ARM64.Build.0 = Debug|ARM64 + {7ACF84EC-EFBA-4043-8E14-40B159508902}.Debug|x64.ActiveCfg = Debug|x64 + {7ACF84EC-EFBA-4043-8E14-40B159508902}.Debug|x64.Build.0 = Debug|x64 + {7ACF84EC-EFBA-4043-8E14-40B159508902}.Debug|x86.ActiveCfg = Debug|Win32 + {7ACF84EC-EFBA-4043-8E14-40B159508902}.Debug|x86.Build.0 = Debug|Win32 + {7ACF84EC-EFBA-4043-8E14-40B159508902}.Release|ARM64.ActiveCfg = Release|ARM64 + {7ACF84EC-EFBA-4043-8E14-40B159508902}.Release|ARM64.Build.0 = Release|ARM64 + {7ACF84EC-EFBA-4043-8E14-40B159508902}.Release|x64.ActiveCfg = Release|x64 + {7ACF84EC-EFBA-4043-8E14-40B159508902}.Release|x64.Build.0 = Release|x64 + {7ACF84EC-EFBA-4043-8E14-40B159508902}.Release|x86.ActiveCfg = Release|Win32 + {7ACF84EC-EFBA-4043-8E14-40B159508902}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/windows/artificialChat/AutolinkedNativeModules.g.cpp b/windows/artificialChat/AutolinkedNativeModules.g.cpp index 0f05d01..b03fdb9 100644 --- a/windows/artificialChat/AutolinkedNativeModules.g.cpp +++ b/windows/artificialChat/AutolinkedNativeModules.g.cpp @@ -12,6 +12,9 @@ // Includes from @react-native-picker/picker #include +// Includes from react-native-svg +#include + namespace winrt::Microsoft::ReactNative { @@ -23,6 +26,8 @@ void RegisterAutolinkedNativeModulePackages(winrt::Windows::Foundation::Collecti packageProviders.Append(winrt::NativeClipboard::ReactPackageProvider()); // IReactPackageProviders from @react-native-picker/picker packageProviders.Append(winrt::ReactNativePicker::ReactPackageProvider()); + // IReactPackageProviders from react-native-svg + packageProviders.Append(winrt::RNSVG::ReactPackageProvider()); } } diff --git a/windows/artificialChat/AutolinkedNativeModules.g.targets b/windows/artificialChat/AutolinkedNativeModules.g.targets index 541176e..d8d3762 100644 --- a/windows/artificialChat/AutolinkedNativeModules.g.targets +++ b/windows/artificialChat/AutolinkedNativeModules.g.targets @@ -14,5 +14,9 @@ {bedcc600-4541-41f2-aa46-9e058202b6ad} + + + {7acf84ec-efba-4043-8e14-40b159508902} + diff --git a/windows/artificialChat/artificialChat.vcxproj b/windows/artificialChat/artificialChat.vcxproj index 6977dda..6175f27 100644 --- a/windows/artificialChat/artificialChat.vcxproj +++ b/windows/artificialChat/artificialChat.vcxproj @@ -203,6 +203,7 @@ + diff --git a/windows/artificialChat/packages.config b/windows/artificialChat/packages.config index 8d69906..686a712 100644 --- a/windows/artificialChat/packages.config +++ b/windows/artificialChat/packages.config @@ -2,4 +2,5 @@ + \ No newline at end of file diff --git a/windows/artificialChat/packages.lock.json b/windows/artificialChat/packages.lock.json index 4a89027..4a453d2 100644 --- a/windows/artificialChat/packages.lock.json +++ b/windows/artificialChat/packages.lock.json @@ -33,6 +33,11 @@ "resolved": "1.0.1264.42", "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA==" }, + "Win2D.uwp": { + "type": "Transitive", + "resolved": "1.26.0", + "contentHash": "smA/NJWM3ruhWeKPHmCyW8PX8w1ckD9SN7qWEOePe/iuFKvLyC8govCHq/F40hQCRs8zBqHWaWBpekTnQuXx6w==" + }, "clipboard": { "type": "Project", "dependencies": { @@ -87,6 +92,14 @@ "Microsoft.ReactNative": "[1.0.0, )", "Microsoft.UI.Xaml": "[2.8.0, )" } + }, + "rnsvg": { + "type": "Project", + "dependencies": { + "Microsoft.ReactNative": "[1.0.0, )", + "Microsoft.UI.Xaml": "[2.8.0, )", + "Win2D.uwp": "[1.26.0, )" + } } }, "native,Version=v0.0/win10-arm": { @@ -94,6 +107,11 @@ "type": "Transitive", "resolved": "1.0.1264.42", "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA==" + }, + "Win2D.uwp": { + "type": "Transitive", + "resolved": "1.26.0", + "contentHash": "smA/NJWM3ruhWeKPHmCyW8PX8w1ckD9SN7qWEOePe/iuFKvLyC8govCHq/F40hQCRs8zBqHWaWBpekTnQuXx6w==" } }, "native,Version=v0.0/win10-arm-aot": { @@ -101,6 +119,11 @@ "type": "Transitive", "resolved": "1.0.1264.42", "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA==" + }, + "Win2D.uwp": { + "type": "Transitive", + "resolved": "1.26.0", + "contentHash": "smA/NJWM3ruhWeKPHmCyW8PX8w1ckD9SN7qWEOePe/iuFKvLyC8govCHq/F40hQCRs8zBqHWaWBpekTnQuXx6w==" } }, "native,Version=v0.0/win10-arm64-aot": { @@ -108,6 +131,11 @@ "type": "Transitive", "resolved": "1.0.1264.42", "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA==" + }, + "Win2D.uwp": { + "type": "Transitive", + "resolved": "1.26.0", + "contentHash": "smA/NJWM3ruhWeKPHmCyW8PX8w1ckD9SN7qWEOePe/iuFKvLyC8govCHq/F40hQCRs8zBqHWaWBpekTnQuXx6w==" } }, "native,Version=v0.0/win10-x64": { @@ -115,6 +143,11 @@ "type": "Transitive", "resolved": "1.0.1264.42", "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA==" + }, + "Win2D.uwp": { + "type": "Transitive", + "resolved": "1.26.0", + "contentHash": "smA/NJWM3ruhWeKPHmCyW8PX8w1ckD9SN7qWEOePe/iuFKvLyC8govCHq/F40hQCRs8zBqHWaWBpekTnQuXx6w==" } }, "native,Version=v0.0/win10-x64-aot": { @@ -122,6 +155,11 @@ "type": "Transitive", "resolved": "1.0.1264.42", "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA==" + }, + "Win2D.uwp": { + "type": "Transitive", + "resolved": "1.26.0", + "contentHash": "smA/NJWM3ruhWeKPHmCyW8PX8w1ckD9SN7qWEOePe/iuFKvLyC8govCHq/F40hQCRs8zBqHWaWBpekTnQuXx6w==" } }, "native,Version=v0.0/win10-x86": { @@ -129,6 +167,11 @@ "type": "Transitive", "resolved": "1.0.1264.42", "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA==" + }, + "Win2D.uwp": { + "type": "Transitive", + "resolved": "1.26.0", + "contentHash": "smA/NJWM3ruhWeKPHmCyW8PX8w1ckD9SN7qWEOePe/iuFKvLyC8govCHq/F40hQCRs8zBqHWaWBpekTnQuXx6w==" } }, "native,Version=v0.0/win10-x86-aot": { @@ -136,6 +179,11 @@ "type": "Transitive", "resolved": "1.0.1264.42", "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA==" + }, + "Win2D.uwp": { + "type": "Transitive", + "resolved": "1.26.0", + "contentHash": "smA/NJWM3ruhWeKPHmCyW8PX8w1ckD9SN7qWEOePe/iuFKvLyC8govCHq/F40hQCRs8zBqHWaWBpekTnQuXx6w==" } } } diff --git a/yarn.lock b/yarn.lock index 27eb4b1..6a2d71c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3654,6 +3654,11 @@ bl@^4.1.0: inherits "^2.0.4" readable-stream "^3.4.0" +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -4093,6 +4098,17 @@ css-color-keywords@^1.0.0: resolved "https://registry.yarnpkg.com/css-color-keywords/-/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05" integrity sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg== +css-select@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" + integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== + dependencies: + boolbase "^1.0.0" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" + css-to-react-native@^3.0.0: version "3.2.0" resolved "https://registry.yarnpkg.com/css-to-react-native/-/css-to-react-native-3.2.0.tgz#cdd8099f71024e149e4f6fe17a7d46ecd55f1e32" @@ -4102,6 +4118,19 @@ css-to-react-native@^3.0.0: css-color-keywords "^1.0.0" postcss-value-parser "^4.0.2" +css-tree@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== + dependencies: + mdn-data "2.0.14" + source-map "^0.6.1" + +css-what@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== + csstype@^3.0.2: version "3.1.2" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" @@ -4264,6 +4293,36 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== + dependencies: + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" + +domelementtype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domhandler@^5.0.1, domhandler@^5.0.2: + version "5.0.3" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== + dependencies: + domelementtype "^2.3.0" + +domutils@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.0.1.tgz#696b3875238338cb186b6c0612bd4901c89a4f1c" + integrity sha512-z08c1l761iKhDFtfXO04C7kTdPBLi41zwOZl00WS8b5eiaebNpY00HKbztwBq+e3vyqWNwWF3mP9YLUeqIrF+Q== + dependencies: + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.1" + ee-first@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" @@ -4303,6 +4362,11 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" +entities@^4.2.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.4.0.tgz#97bdaba170339446495e653cfd2db78962900174" + integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA== + entities@~2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f" @@ -6415,6 +6479,11 @@ marky@^1.2.2: resolved "https://registry.yarnpkg.com/marky/-/marky-1.2.5.tgz#55796b688cbd72390d2d399eaaf1832c9413e3c0" integrity sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q== +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== + mdurl@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" @@ -7002,6 +7071,13 @@ npm-run-path@^4.0.0, npm-run-path@^4.0.1: dependencies: path-key "^3.0.0" +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + nullthrows@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" @@ -7557,6 +7633,14 @@ react-native-markdown-display-updated@^7.0.0: prop-types "^15.7.2" react-native-fit-image "^1.5.5" +react-native-svg@^13.9.0: + version "13.9.0" + resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-13.9.0.tgz#8df8a690dd00362601f074dec5d3a86dd0f99c7f" + integrity sha512-Ey18POH0dA0ob/QiwCBVrxIiwflhYuw0P0hBlOHeY4J5cdbs8ngdKHeWC/Kt9+ryP6fNoEQ1PUgPYw2Bs/rp5Q== + dependencies: + css-select "^5.1.0" + css-tree "^1.1.3" + react-native-syntax-highlighter@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/react-native-syntax-highlighter/-/react-native-syntax-highlighter-2.1.0.tgz#66bdb2cedbe938b291bfe415e5d72d0c275ce353" From 49cc26343f5e2925261eb04cd72f74aa6ce367c0 Mon Sep 17 00:00:00 2001 From: Chris Glein <26607885+chrisglein@users.noreply.github.com> Date: Thu, 30 Mar 2023 18:33:10 -0700 Subject: [PATCH 03/15] Try Checkbox and Link --- src/Settings.tsx | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/Settings.tsx b/src/Settings.tsx index 16e028a..f4bf8b2 100644 --- a/src/Settings.tsx +++ b/src/Settings.tsx @@ -9,14 +9,17 @@ import { DialogSection, } from './Popups'; import { - Hyperlink, SwitchWithLabel, } from './Controls'; import {StylesContext} from './Styles'; import {Picker} from '@react-native-picker/picker'; import {ChatScriptNames} from './ChatScript'; import AsyncStorage from '@react-native-async-storage/async-storage'; -import { ButtonV1 as Button } from '@fluentui/react-native'; +import { + ButtonV1 as Button, + Link, + CheckboxV1 as Checkbox, +} from '@fluentui/react-native'; const settingsKey = 'settings'; @@ -203,11 +206,12 @@ function SettingsPopup({show, close}: SettingsPopupProps): JSX.Element { style={{flexGrow: 1, minHeight: 32}} onChangeText={value => setApiKey(value)} value={apiKey}/> - setSaveApiKey(value)}/> - setSaveApiKey(value)}/> + From 432a754425b6d1ec38b1c05823bc4d26b9587a92 Mon Sep 17 00:00:00 2001 From: Chris Glein <26607885+chrisglein@users.noreply.github.com> Date: Fri, 31 Mar 2023 17:12:51 -0700 Subject: [PATCH 04/15] Add corrections to Windows for FURN themes --- src/App.tsx | 32 +++++++++++++----------- src/Styles.tsx | 67 +++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 84 insertions(+), 15 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 805a6f8..3338dcd 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -7,6 +7,7 @@ import { ChatSession } from './ChatSession'; import { StylesContext, CreateStyles, + createWindowsTheme, } from './Styles'; import { SettingsContext, @@ -14,6 +15,7 @@ import { } from './Settings'; import { AboutPopup } from './About'; import { PopupsContext } from './Popups'; +import { ThemeProvider } from '@fluentui-react-native/theme'; function App(): JSX.Element { const [currentTheme, setCurrentTheme] = React.useState(Appearance.getColorScheme()); @@ -25,7 +27,7 @@ function App(): JSX.Element { const [detectImageIntent, setDetectImageIntent] = React.useState(true); const [imageResponseCount, setImageResponseCount] = React.useState(1); const [imageSize, setImageSize] = React.useState(256); - const [showSettingsPopup, setShowSettingsPopup] = React.useState(false); + const [showSettingsPopup, setShowSettingsPopup] = React.useState(true); const [showAboutPopup, setShowAboutPopup] = React.useState(false); const isDarkMode = currentTheme === 'dark'; @@ -67,19 +69,21 @@ function App(): JSX.Element { return ( - - - - - popups.setShowSettings(false)}/> - popups.setShowAbout(false)}/> - - - + + + + + + popups.setShowSettings(false)}/> + popups.setShowAbout(false)}/> + + + + ); } diff --git a/src/Styles.tsx b/src/Styles.tsx index 94f26c2..90f327c 100644 --- a/src/Styles.tsx +++ b/src/Styles.tsx @@ -7,6 +7,9 @@ import type { } from 'react-native'; import { PlatformColor } from 'react-native'; import { StyleSheet } from 'react-native'; +import { ThemeReference } from '@fluentui-react-native/theme'; +import { createDefaultTheme } from '@fluentui-react-native/default-theme'; +import { globalTokens } from '@fluentui-react-native/theme-tokens'; const StylesContext = React.createContext<{ appContent: StyleProp; @@ -140,4 +143,66 @@ const CreateStyles = (isDarkMode: boolean) => { }); } -export { StylesContext, CreateStyles }; \ No newline at end of file +let windowsThemeReference: ThemeReference; + +function createWindowsTheme(): ThemeReference { + windowsThemeReference = new ThemeReference(createDefaultTheme(), (t) => { + return { + components: { + Checkbox: { + large: { + borderRadius: globalTokens.corner.radius40, + checkboxBorderRadius: globalTokens.corner.radius40, + checkmarkSize: 12, + }, + checkboxBackgroundColor: PlatformColor('ControlAltFillColorSecondaryBrush'), + hovered: { + checkboxBackgroundColor: PlatformColor('ControlAltFillColorTertiaryBrush'), + }, + pressed: { + checkboxBackgroundColor: PlatformColor('ControlAltFillColorQuarternaryBrush'), + } + } + }, + colors: { + link: PlatformColor('AccentTextFillColorPrimaryBrush'), + linkHovered: PlatformColor('AccentTextFillColorSecondaryBrush'), + linkPressed: PlatformColor('AccentTextFillColorTertiaryBrush'), + + neutralStrokeAccessible: PlatformColor('ControlStrongStrokeColorDefaultBrush'), // border for unchecked checkbox (idle) + neutralStrokeAccessibleHover: PlatformColor('ControlStrongStrokeColorDefaultBrush'), // border for unchecked checkbox (hover) + neutralStrokeAccessiblePressed: PlatformColor('ControlStrongStrokeColorDisabledBrush'), // border for unchecked checkbox (pressed) + neutralStrokeDisabled: PlatformColor('ControlStrongStrokeColorDisabledBrush'), // border for unchecked checkbox (disabled) + + neutralForeground1: PlatformColor('TextFillColorPrimaryBrush'), // foreground for unchecked checkbox (pressed) + neutralForeground1Hover: PlatformColor('TextFillColorPrimaryBrush'), + neutralForeground1Pressed: PlatformColor('TextFillColorPrimaryBrush'), + neutralForegroundDisabled: PlatformColor('TextFillColorDisabledBrush'), // check color for checked/unchecked checkbox (disabled) + neutralForeground2: PlatformColor('TextFillColorPrimaryBrush'), // foreground for unchecked checkbox (hover) + neutralForeground3: PlatformColor('TextFillColorPrimaryBrush'), // foreground for unchecked checkbox (idle) + + // Used for Button + neutralForegroundOnBrand: PlatformColor('TextOnAccentFillColorPrimaryBrush'), // check color for checked checkbox (hover/pressed/idle) + + // Used for Button + neutralBackground1: PlatformColor('ControlFillColorDefaultBrush'), // fill for unchecked checkbox (idle/hover/pressed) + neutralBackground1Hover: PlatformColor('ControlFillColorSecondaryBrush'), + neutralBackground1Pressed: PlatformColor('ControlFillColorTertiaryBrush'), + neutralBackgroundDisabled: PlatformColor('ControlFillColorDisabledBrush'), // fill for unchecked checkbox (disabled) + + // Used for Button + brandBackground: PlatformColor('AccentFillColorDefaultBrush'), + brandBackgroundHover: PlatformColor('AccentFillColorSecondaryBrush'), + brandBackgroundPressed: PlatformColor('AccentFillColorTertiaryBrush'), + brandBackgroundDisabled: PlatformColor('AccentFillColorDisabledBrush'), + + compoundBrandBackground1: PlatformColor('AccentFillColorDefaultBrush'), // fill and border for checked checkbox (idle) + compoundBrandBackground1Pressed: PlatformColor('AccentFillColorTertiaryBrush'), // fill and border for checked checkbox (pressed) + compoundBrandBackground1Hover: PlatformColor('AccentFillColorSecondaryBrush'), // fill and border for checked checkbox (hover) + } + }}); + + return windowsThemeReference; +} + +export { StylesContext, CreateStyles, createWindowsTheme }; \ No newline at end of file From 6aedbe90ee5c4c1eb324a0cee3a6516b66e1d778 Mon Sep 17 00:00:00 2001 From: Chris Glein <26607885+chrisglein@users.noreply.github.com> Date: Fri, 31 Mar 2023 17:13:02 -0700 Subject: [PATCH 05/15] Add FURN to dependencies readme --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index a9a65f7..a851e75 100644 --- a/README.md +++ b/README.md @@ -107,3 +107,4 @@ The app's settings are handled by a `SettingsContext` object, which has dialog U - Storage via [react-native-async-storage](https://github.com/react-native-async-storage/async-storage) - Markdown rendering via [react-native-markdown-display-updated](https://github.com/willmac321/react-native-markdown-display) - Dialogs via [react-native-content-dialog](https://github.com/chrisglein/react-native-content-dialog) +- Button, Checkbox, Link via [@fluentui/react-native](https://github.com/microsoft/fluentui-react-native) From 6e2d510172d25c301369451102ec983fc5f0fdbb Mon Sep 17 00:00:00 2001 From: Chris Glein <26607885+chrisglein@users.noreply.github.com> Date: Fri, 31 Mar 2023 17:13:28 -0700 Subject: [PATCH 06/15] Use large checkbox Fix image size strings coming in (causing need to double select) --- src/Settings.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Settings.tsx b/src/Settings.tsx index f4bf8b2..1136dfc 100644 --- a/src/Settings.tsx +++ b/src/Settings.tsx @@ -208,6 +208,7 @@ function SettingsPopup({show, close}: SettingsPopupProps): JSX.Element { value={apiKey}/> setSaveApiKey(value)}/> setImageSize(value)}> + onValueChange={value => setImageSize(typeof value === 'number' ? value : parseInt(value))}> {[256, 512, 1024].map(size => )} From dcbd4c6f8bed6c3f45f8cff642632a0ac461b50b Mon Sep 17 00:00:00 2001 From: Chris Glein <26607885+chrisglein@users.noreply.github.com> Date: Fri, 31 Mar 2023 17:17:21 -0700 Subject: [PATCH 07/15] More use of checkbox --- src/App.tsx | 2 +- src/Settings.tsx | 10 ++++------ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index 3338dcd..4a010de 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -27,7 +27,7 @@ function App(): JSX.Element { const [detectImageIntent, setDetectImageIntent] = React.useState(true); const [imageResponseCount, setImageResponseCount] = React.useState(1); const [imageSize, setImageSize] = React.useState(256); - const [showSettingsPopup, setShowSettingsPopup] = React.useState(true); + const [showSettingsPopup, setShowSettingsPopup] = React.useState(false); const [showAboutPopup, setShowAboutPopup] = React.useState(false); const isDarkMode = currentTheme === 'dark'; diff --git a/src/Settings.tsx b/src/Settings.tsx index 1136dfc..b29d73d 100644 --- a/src/Settings.tsx +++ b/src/Settings.tsx @@ -8,9 +8,6 @@ import { ContentDialog, DialogSection, } from './Popups'; -import { - SwitchWithLabel, -} from './Controls'; import {StylesContext} from './Styles'; import {Picker} from '@react-native-picker/picker'; import {ChatScriptNames} from './ChatScript'; @@ -216,10 +213,11 @@ function SettingsPopup({show, close}: SettingsPopupProps): JSX.Element { url="https://platform.openai.com/account/api-keys"/> - setDetectImageIntent(value)}/> + size='large' + checked={detectImageIntent} + onChange={(event, value) => setDetectImageIntent(value)}/> Image Count Date: Mon, 3 Apr 2023 10:17:32 -0700 Subject: [PATCH 08/15] Remove icon from dialogs --- package.json | 5 +++-- src/Feedback.tsx | 4 ++-- src/Settings.tsx | 1 + src/Styles.tsx | 9 +-------- yarn.lock | 45 +++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 52 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index 5449aa4..445ffde 100644 --- a/package.json +++ b/package.json @@ -39,10 +39,11 @@ "babel-jest": "^29.6.3", "eslint": "^8.19.0", "jest": "^29.6.3", + "metro-config": "^0.79.1", + "metro-react-native-babel-preset": "^0.77.0", "prettier": "2.8.8", "react-test-renderer": "18.2.0", - "typescript": "5.0.4", - "metro-config": "^0.79.1" + "typescript": "5.0.4" }, "engines": { "node": ">=18" diff --git a/src/Feedback.tsx b/src/Feedback.tsx index cb1f0f9..0cb1c8d 100644 --- a/src/Feedback.tsx +++ b/src/Feedback.tsx @@ -50,10 +50,10 @@ function FeedbackPopup({show, close, isPositive, response}: FeedbackPopupProps): + {"Your feedback: " + (isPositive ? "πŸ‘" : "πŸ‘Ž")} diff --git a/src/Styles.tsx b/src/Styles.tsx index 90f327c..bd5cd57 100644 --- a/src/Styles.tsx +++ b/src/Styles.tsx @@ -22,7 +22,6 @@ const StylesContext = React.createContext<{ horizontalContainer: StyleProp; dalleImage: StyleProp; inlineCard: StyleProp; - dialogTitleIcon: StyleProp; dialogTitle: StyleProp; dialogSectionsContainer: StyleProp; dialogSection: StyleProp; @@ -87,12 +86,6 @@ const CreateStyles = (isDarkMode: boolean) => { borderRadius: 8, padding: 8, }, - dialogTitleIcon: { - backgroundColor: 'gray', - borderRadius: 4, - alignSelf: 'center', - padding: 2, - }, dialogTitle: { fontSize: 20, }, @@ -121,7 +114,7 @@ const CreateStyles = (isDarkMode: boolean) => { flexDirection: 'row', flexWrap: 'wrap', alignItems: 'center', - gap: 4, + gap: 8, }, codeBlockTitle: { backgroundColor: isDarkMode ? 'white' : '#444', diff --git a/yarn.lock b/yarn.lock index 6a2d71c..ef6b349 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6666,6 +6666,51 @@ metro-minify-terser@0.80.6: dependencies: terser "^5.15.0" +metro-react-native-babel-preset@^0.77.0: + version "0.77.0" + resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.77.0.tgz#47457eca8e36b77156afbe790247a70dbb40faaa" + integrity sha512-HPPD+bTxADtoE4y/4t1txgTQ1LVR6imOBy7RMHUsqMVTbekoi8Ph5YI9vKX2VMPtVWeFt0w9YnCSLPa76GcXsA== + dependencies: + "@babel/core" "^7.20.0" + "@babel/plugin-proposal-async-generator-functions" "^7.0.0" + "@babel/plugin-proposal-class-properties" "^7.18.0" + "@babel/plugin-proposal-export-default-from" "^7.0.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.0" + "@babel/plugin-proposal-numeric-separator" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.20.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" + "@babel/plugin-proposal-optional-chaining" "^7.20.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-default-from" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.18.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" + "@babel/plugin-syntax-optional-chaining" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-async-to-generator" "^7.20.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.20.0" + "@babel/plugin-transform-flow-strip-types" "^7.20.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-react-jsx-self" "^7.0.0" + "@babel/plugin-transform-react-jsx-source" "^7.0.0" + "@babel/plugin-transform-runtime" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-sticky-regex" "^7.0.0" + "@babel/plugin-transform-typescript" "^7.5.0" + "@babel/plugin-transform-unicode-regex" "^7.0.0" + "@babel/template" "^7.0.0" + babel-plugin-transform-flow-enums "^0.0.2" + react-refresh "^0.4.0" + metro-resolver@0.79.1: version "0.79.1" resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.79.1.tgz#80e6e27305eb446188009f54374b642f28f49b65" From b8eea22e5b35d114c662cbfc352d8c99ad4e566c Mon Sep 17 00:00:00 2001 From: Chris Glein <26607885+chrisglein@users.noreply.github.com> Date: Mon, 3 Apr 2023 11:15:40 -0700 Subject: [PATCH 09/15] Add scrollbar to tall dialogs --- src/About.tsx | 2 +- src/Popups.tsx | 1 + src/Styles.tsx | 3 ++- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/About.tsx b/src/About.tsx index b52cc94..d51a153 100644 --- a/src/About.tsx +++ b/src/About.tsx @@ -25,7 +25,7 @@ function AboutPopup({show, close}: AboutPopupProps): JSX.Element { title="About" defaultButtonIndex={0}> Version: {VersionInfo.getConstants().appVersion} - + Source code: { backgroundColor: isDarkMode ? '#292929' : '#FFFFFF', padding: 12, borderRadius: 8, - minWidth: 300 + minWidth: 300, + gap: 12, }, dialogButtons: { marginTop: 12, From a05ecdea27f2ef7b3027c5b77ff3ab743511522a Mon Sep 17 00:00:00 2001 From: Chris Glein <26607885+chrisglein@users.noreply.github.com> Date: Mon, 3 Apr 2023 11:42:42 -0700 Subject: [PATCH 10/15] Update dialog visuals to match ContentDialog - added bottom button area of different color --- src/Styles.tsx | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/Styles.tsx b/src/Styles.tsx index 866376c..d1668c9 100644 --- a/src/Styles.tsx +++ b/src/Styles.tsx @@ -27,6 +27,8 @@ const StylesContext = React.createContext<{ dialogSection: StyleProp; dialogSectionHeader: StyleProp; dialogBackground: StyleProp; + dialogContentArea: StyleProp; + dialogButtonBackground: StyleProp; dialogButtons: StyleProp; codeBlockTitle: StyleProp; codeBlockTitleText: StyleProp; @@ -87,7 +89,9 @@ const CreateStyles = (isDarkMode: boolean) => { padding: 8, }, dialogTitle: { + fontWeight: '600', fontSize: 20, + marginBottom: 12, }, dialogSectionsContainer: { gap: 12, @@ -104,10 +108,24 @@ const CreateStyles = (isDarkMode: boolean) => { }, dialogBackground: { backgroundColor: isDarkMode ? '#292929' : '#FFFFFF', + paddingLeft: 12, + paddingRight: 12, + paddingTop: 12, + borderTopLeftRadius: 8, + borderTopRightRadius: 8, + minWidth: 320, + minHeight: 184, + }, + dialogContentArea: { + paddingBottom: 12, + }, + dialogButtonBackground: { + borderColor: isDarkMode ? '#1D1D1D': '#E5E5E5', + borderTopWidth: 1, + backgroundColor: isDarkMode ? '#202020' : '#F3F3F3', + borderBottomLeftRadius: 8, + borderBottomRightRadius: 8, padding: 12, - borderRadius: 8, - minWidth: 300, - gap: 12, }, dialogButtons: { marginTop: 12, From 9499316089ee7439363375f59c828e206e4dd976 Mon Sep 17 00:00:00 2001 From: Chris Glein <26607885+chrisglein@users.noreply.github.com> Date: Mon, 3 Apr 2023 12:27:58 -0700 Subject: [PATCH 11/15] Un-round single corner to make chat look better Fixes #84 --- src/Styles.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Styles.tsx b/src/Styles.tsx index d1668c9..48b1528 100644 --- a/src/Styles.tsx +++ b/src/Styles.tsx @@ -55,14 +55,16 @@ const CreateStyles = (isDarkMode: boolean) => { marginHorizontal: 12, paddingHorizontal: 24, paddingVertical: 12, - borderRadius: 8, + borderRadius: 12, }, humanSection: { backgroundColor: isDarkMode ? '#2F2F4A' : '#E8EBFA', + borderBottomLeftRadius: 0, marginRight: 64, }, AiSection: { backgroundColor: isDarkMode ? '#292929' : '#FFFFFF', + borderBottomRightRadius: 0, marginLeft: 64, }, sectionTitle: { From c8974945d66ec12c9d3b7d05c4a5e2cfa172b78c Mon Sep 17 00:00:00 2001 From: Chris Glein <26607885+chrisglein@users.noreply.github.com> Date: Tue, 14 Nov 2023 15:59:30 -0800 Subject: [PATCH 12/15] Update to SVG 14.0.0 --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 445ffde..f782022 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "react-native": "0.73.0-rc.1", "react-native-content-dialog": "^0.2.0", "react-native-markdown-display-updated": "^7.0.0", - "react-native-svg": "^13.9.0", + "react-native-svg": "^14.0.0", "react-native-syntax-highlighter": "^2.1.0", "react-native-windows": "0.73.10" }, diff --git a/yarn.lock b/yarn.lock index ef6b349..3ca2cc6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7678,10 +7678,10 @@ react-native-markdown-display-updated@^7.0.0: prop-types "^15.7.2" react-native-fit-image "^1.5.5" -react-native-svg@^13.9.0: - version "13.9.0" - resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-13.9.0.tgz#8df8a690dd00362601f074dec5d3a86dd0f99c7f" - integrity sha512-Ey18POH0dA0ob/QiwCBVrxIiwflhYuw0P0hBlOHeY4J5cdbs8ngdKHeWC/Kt9+ryP6fNoEQ1PUgPYw2Bs/rp5Q== +react-native-svg@^14.0.0: + version "14.0.0" + resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-14.0.0.tgz#ea1974dec9a91a09c6a38b7bf58d85e857c291f5" + integrity sha512-17W/gWXRUMS7p7PSHu/WyGkZUc1NzRTGxxXc0VqBLjzKSchyb0EmgsiWf9aKmfC6gmY0wcsmKZcGV41bCcNfBA== dependencies: css-select "^5.1.0" css-tree "^1.1.3" From 3d1ad7c7f1b54ef9afdd007be318d31a6993a03b Mon Sep 17 00:00:00 2001 From: Chris Glein <26607885+chrisglein@users.noreply.github.com> Date: Tue, 12 Mar 2024 17:06:41 -0700 Subject: [PATCH 13/15] Update lock file --- windows/artificialChat/packages.lock.json | 43 +---------------------- 1 file changed, 1 insertion(+), 42 deletions(-) diff --git a/windows/artificialChat/packages.lock.json b/windows/artificialChat/packages.lock.json index 4a453d2..377393a 100644 --- a/windows/artificialChat/packages.lock.json +++ b/windows/artificialChat/packages.lock.json @@ -33,11 +33,6 @@ "resolved": "1.0.1264.42", "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA==" }, - "Win2D.uwp": { - "type": "Transitive", - "resolved": "1.26.0", - "contentHash": "smA/NJWM3ruhWeKPHmCyW8PX8w1ckD9SN7qWEOePe/iuFKvLyC8govCHq/F40hQCRs8zBqHWaWBpekTnQuXx6w==" - }, "clipboard": { "type": "Project", "dependencies": { @@ -97,8 +92,7 @@ "type": "Project", "dependencies": { "Microsoft.ReactNative": "[1.0.0, )", - "Microsoft.UI.Xaml": "[2.8.0, )", - "Win2D.uwp": "[1.26.0, )" + "Microsoft.UI.Xaml": "[2.8.0, )" } } }, @@ -107,11 +101,6 @@ "type": "Transitive", "resolved": "1.0.1264.42", "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA==" - }, - "Win2D.uwp": { - "type": "Transitive", - "resolved": "1.26.0", - "contentHash": "smA/NJWM3ruhWeKPHmCyW8PX8w1ckD9SN7qWEOePe/iuFKvLyC8govCHq/F40hQCRs8zBqHWaWBpekTnQuXx6w==" } }, "native,Version=v0.0/win10-arm-aot": { @@ -119,11 +108,6 @@ "type": "Transitive", "resolved": "1.0.1264.42", "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA==" - }, - "Win2D.uwp": { - "type": "Transitive", - "resolved": "1.26.0", - "contentHash": "smA/NJWM3ruhWeKPHmCyW8PX8w1ckD9SN7qWEOePe/iuFKvLyC8govCHq/F40hQCRs8zBqHWaWBpekTnQuXx6w==" } }, "native,Version=v0.0/win10-arm64-aot": { @@ -131,11 +115,6 @@ "type": "Transitive", "resolved": "1.0.1264.42", "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA==" - }, - "Win2D.uwp": { - "type": "Transitive", - "resolved": "1.26.0", - "contentHash": "smA/NJWM3ruhWeKPHmCyW8PX8w1ckD9SN7qWEOePe/iuFKvLyC8govCHq/F40hQCRs8zBqHWaWBpekTnQuXx6w==" } }, "native,Version=v0.0/win10-x64": { @@ -143,11 +122,6 @@ "type": "Transitive", "resolved": "1.0.1264.42", "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA==" - }, - "Win2D.uwp": { - "type": "Transitive", - "resolved": "1.26.0", - "contentHash": "smA/NJWM3ruhWeKPHmCyW8PX8w1ckD9SN7qWEOePe/iuFKvLyC8govCHq/F40hQCRs8zBqHWaWBpekTnQuXx6w==" } }, "native,Version=v0.0/win10-x64-aot": { @@ -155,11 +129,6 @@ "type": "Transitive", "resolved": "1.0.1264.42", "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA==" - }, - "Win2D.uwp": { - "type": "Transitive", - "resolved": "1.26.0", - "contentHash": "smA/NJWM3ruhWeKPHmCyW8PX8w1ckD9SN7qWEOePe/iuFKvLyC8govCHq/F40hQCRs8zBqHWaWBpekTnQuXx6w==" } }, "native,Version=v0.0/win10-x86": { @@ -167,11 +136,6 @@ "type": "Transitive", "resolved": "1.0.1264.42", "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA==" - }, - "Win2D.uwp": { - "type": "Transitive", - "resolved": "1.26.0", - "contentHash": "smA/NJWM3ruhWeKPHmCyW8PX8w1ckD9SN7qWEOePe/iuFKvLyC8govCHq/F40hQCRs8zBqHWaWBpekTnQuXx6w==" } }, "native,Version=v0.0/win10-x86-aot": { @@ -179,11 +143,6 @@ "type": "Transitive", "resolved": "1.0.1264.42", "contentHash": "7OBUTkzQ5VI/3gb0ufi5U4zjuCowAJwQg2li0zXXzqkM+S1kmOlivTy1R4jAW+gY5Vyg510M+qMAESCQUjrfgA==" - }, - "Win2D.uwp": { - "type": "Transitive", - "resolved": "1.26.0", - "contentHash": "smA/NJWM3ruhWeKPHmCyW8PX8w1ckD9SN7qWEOePe/iuFKvLyC8govCHq/F40hQCRs8zBqHWaWBpekTnQuXx6w==" } } } From 2d69530f5707fd1c0a48ff854b8215862583c212 Mon Sep 17 00:00:00 2001 From: Chris Glein <26607885+chrisglein@users.noreply.github.com> Date: Thu, 14 Mar 2024 09:02:09 -0700 Subject: [PATCH 14/15] Patch SVG SDK issues Default to direct debugging --- package.json | 6 ++--- ...-async-storage+async-storage+1.22.3.patch} | 13 ++++------ patches/react-native-svg+15.1.0.patch | 18 ++++++++++++++ windows/artificialChat/App.cpp | 3 +-- yarn.lock | 24 +++++++++---------- 5 files changed, 38 insertions(+), 26 deletions(-) rename patches/{@react-native-async-storage+async-storage+1.19.3.patch => @react-native-async-storage+async-storage+1.22.3.patch} (95%) create mode 100644 patches/react-native-svg+15.1.0.patch diff --git a/package.json b/package.json index f782022..1fea1e5 100644 --- a/package.json +++ b/package.json @@ -13,16 +13,16 @@ }, "dependencies": { "@fluentui/react-native": "^0.36.20", - "@react-native-async-storage/async-storage": "^1.17.11", + "@react-native-async-storage/async-storage": "^1.22.3", "@react-native-clipboard/clipboard": "^1.12.1", - "@react-native-picker/picker": "^2.5.1", + "@react-native-picker/picker": "^2.6.1", "patch-package": "^6.5.1", "postinstall-postinstall": "^2.1.0", "react": "18.2.0", "react-native": "0.73.0-rc.1", "react-native-content-dialog": "^0.2.0", "react-native-markdown-display-updated": "^7.0.0", - "react-native-svg": "^14.0.0", + "react-native-svg": "^15.1.0", "react-native-syntax-highlighter": "^2.1.0", "react-native-windows": "0.73.10" }, diff --git a/patches/@react-native-async-storage+async-storage+1.19.3.patch b/patches/@react-native-async-storage+async-storage+1.22.3.patch similarity index 95% rename from patches/@react-native-async-storage+async-storage+1.19.3.patch rename to patches/@react-native-async-storage+async-storage+1.22.3.patch index f8f718d..d0faa41 100644 --- a/patches/@react-native-async-storage+async-storage+1.19.3.patch +++ b/patches/@react-native-async-storage+async-storage+1.22.3.patch @@ -1,5 +1,5 @@ diff --git a/node_modules/@react-native-async-storage/async-storage/windows/ReactNativeAsyncStorage/ReactNativeAsyncStorage.vcxproj b/node_modules/@react-native-async-storage/async-storage/windows/ReactNativeAsyncStorage/ReactNativeAsyncStorage.vcxproj -index fb2a141..82172b0 100644 +index 356e26d..9ad543b 100644 --- a/node_modules/@react-native-async-storage/async-storage/windows/ReactNativeAsyncStorage/ReactNativeAsyncStorage.vcxproj +++ b/node_modules/@react-native-async-storage/async-storage/windows/ReactNativeAsyncStorage/ReactNativeAsyncStorage.vcxproj @@ -1,10 +1,10 @@ @@ -20,7 +20,7 @@ index fb2a141..82172b0 100644 Windows Store 10.0 - 10.0 -- 10.0.16299.0 +- 10.0.17763.0 - @@ -30,7 +30,7 @@ index fb2a141..82172b0 100644 + + + 10.0 -+ 10.0.16299.0 ++ 10.0.17763.0 + @@ -54,12 +54,7 @@ index fb2a141..82172b0 100644 -@@ -136,18 +139,18 @@ - - - -- -+ +@@ -140,14 +143,14 @@ diff --git a/patches/react-native-svg+15.1.0.patch b/patches/react-native-svg+15.1.0.patch new file mode 100644 index 0000000..4ccf9bf --- /dev/null +++ b/patches/react-native-svg+15.1.0.patch @@ -0,0 +1,18 @@ +diff --git a/node_modules/react-native-svg/windows/RNSVG/RNSVG.vcxproj b/node_modules/react-native-svg/windows/RNSVG/RNSVG.vcxproj +index 0fdeca0..8ca53fd 100644 +--- a/node_modules/react-native-svg/windows/RNSVG/RNSVG.vcxproj ++++ b/node_modules/react-native-svg/windows/RNSVG/RNSVG.vcxproj +@@ -26,12 +26,10 @@ + true + Windows Store + 10.0 +- 10.0 +- 10.0.22621.0 + + + +- 10.0.18362.0 ++ 10.0.18362.0 + 10.0.16299.0 + + \ No newline at end of file diff --git a/windows/artificialChat/App.cpp b/windows/artificialChat/App.cpp index 1ce03ac..392bfcd 100644 --- a/windows/artificialChat/App.cpp +++ b/windows/artificialChat/App.cpp @@ -22,13 +22,12 @@ App::App() noexcept { #if BUNDLE JavaScriptBundleFile(L"index.windows"); - InstanceSettings().UseWebDebugger(false); InstanceSettings().UseFastRefresh(false); #else JavaScriptBundleFile(L"index"); - InstanceSettings().UseWebDebugger(true); InstanceSettings().UseFastRefresh(true); #endif + InstanceSettings().UseWebDebugger(false); #if _DEBUG InstanceSettings().UseDeveloperSupport(true); diff --git a/yarn.lock b/yarn.lock index 3ca2cc6..b5f4412 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2099,10 +2099,10 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.17.1.tgz#93d219935e967fbb9aa0592cc96b2c0ec817a56f" integrity sha512-xbR2U+2YjauIuo42qmE8XyJK6dYeRMLJuOlUP5SO4auET4VtOHOzgkRVOq+Ik18N+Xf3YPcqJs9dZMiDddz1eQ== -"@react-native-async-storage/async-storage@^1.17.11": - version "1.19.3" - resolved "https://registry.yarnpkg.com/@react-native-async-storage/async-storage/-/async-storage-1.19.3.tgz#ad5fe3ed0a82d4624aa4500321c1e09c02daeb46" - integrity sha512-CwGfoHCWdPOTPS+2fW6YRE1fFBpT9++ahLEroX5hkgwyoQ+TkmjOaUxixdEIoVua9Pz5EF2pGOIJzqOTMWfBlA== +"@react-native-async-storage/async-storage@^1.22.3": + version "1.22.3" + resolved "https://registry.yarnpkg.com/@react-native-async-storage/async-storage/-/async-storage-1.22.3.tgz#ad490236a9eda8ac68cffc12c738f20b1815464e" + integrity sha512-Ov3wjuqxHd62tLYfgTjxj77YRYWra3A4Fi8uICIPcePgNO2WkS5B0ADXt9e/JLzSCNqVlXCq4Fir/gHmZTU9ww== dependencies: merge-options "^3.0.4" @@ -2418,10 +2418,10 @@ prompts "^2.4.2" semver "^7.5.2" -"@react-native-picker/picker@^2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@react-native-picker/picker/-/picker-2.5.1.tgz#dfa13d5b97bfbedf1f7e7c608181a82f1d58b351" - integrity sha512-/sADUfQsosMRYtrqqL3ZYZSECRygj0fXtpRLqxJfwuMEoqfvfn40756R6B1alzusVvDRZFI0ari0iQid56hA/Q== +"@react-native-picker/picker@^2.6.1": + version "2.6.1" + resolved "https://registry.yarnpkg.com/@react-native-picker/picker/-/picker-2.6.1.tgz#3b20ddd1385fab0487db103dc6519570f8892e6d" + integrity sha512-oJftvmLOj6Y6/bF4kPcK6L83yNBALGmqNYugf94BzP0FQGpHBwimVN2ygqkQ2Sn2ZU3pGUZMs0jV6+Gku2GyYg== "@react-native-windows/cli@0.73.2": version "0.73.2" @@ -7678,10 +7678,10 @@ react-native-markdown-display-updated@^7.0.0: prop-types "^15.7.2" react-native-fit-image "^1.5.5" -react-native-svg@^14.0.0: - version "14.0.0" - resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-14.0.0.tgz#ea1974dec9a91a09c6a38b7bf58d85e857c291f5" - integrity sha512-17W/gWXRUMS7p7PSHu/WyGkZUc1NzRTGxxXc0VqBLjzKSchyb0EmgsiWf9aKmfC6gmY0wcsmKZcGV41bCcNfBA== +react-native-svg@^15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-15.1.0.tgz#07c75f29b1d641faba50144c7ccd21604b368420" + integrity sha512-p0Sx0EpQNk1nu6UcMEiB8K9P04n3J7s+pNYUwf1d/Yz+v4hk961VjuVqjyndgiEbHZyWiKWLZRVNuvLpwjPY2A== dependencies: css-select "^5.1.0" css-tree "^1.1.3" From 1cce8c3baf5fc7e6cee251ac46422a122bd9ed19 Mon Sep 17 00:00:00 2001 From: Chris Glein <26607885+chrisglein@users.noreply.github.com> Date: Thu, 14 Mar 2024 09:25:43 -0700 Subject: [PATCH 15/15] Removed unused styles --- src/About.tsx | 9 ++++---- src/Controls.tsx | 34 +------------------------------ src/Popups.tsx | 1 - src/Styles.tsx | 53 ------------------------------------------------ 4 files changed, 5 insertions(+), 92 deletions(-) diff --git a/src/About.tsx b/src/About.tsx index d51a153..282652d 100644 --- a/src/About.tsx +++ b/src/About.tsx @@ -1,10 +1,9 @@ import React from 'react'; import { - Button, Text, View, } from 'react-native'; -import {Hyperlink} from './Controls'; +import {Link} from '@fluentui/react-native'; import { ContentDialog, } from './Popups'; @@ -25,10 +24,10 @@ function AboutPopup({show, close}: AboutPopupProps): JSX.Element { title="About" defaultButtonIndex={0}> Version: {VersionInfo.getConstants().appVersion} - + Source code: - diff --git a/src/Controls.tsx b/src/Controls.tsx index bddd3e0..a90fe13 100644 --- a/src/Controls.tsx +++ b/src/Controls.tsx @@ -92,38 +92,6 @@ function ImageSelection({image}: ImageSelectionProps): JSX.Element { ); } -type HyperlinkProps = { - url: string, - text?: string, -}; -function Hyperlink({url, text}: HyperlinkProps): JSX.Element { - const styles = React.useContext(StylesContext); - const [hovering, setHovering] = React.useState(false); - const [pressing, setPressing] = React.useState(false); - - let displayText = text ?? url; - - return ( - Linking.openURL(url)} - onPressIn={() => setPressing(true)} - onPressOut={() => setPressing(false)} - onHoverIn={() => setHovering(true)} - onHoverOut={() => setHovering(false)}> - - {displayText} - - - ); -} - function SwitchWithLabel({label, value, onValueChange}: {label: string, value: boolean, onValueChange: (value: boolean) => void}): JSX.Element { return ( @@ -137,4 +105,4 @@ function SwitchWithLabel({label, value, onValueChange}: {label: string, value: b ); } -export { HoverButton, Attribution, ConsentSwitch, ImageSelection, Hyperlink, CodeBlock, SwitchWithLabel }; \ No newline at end of file +export { HoverButton, Attribution, ConsentSwitch, ImageSelection, CodeBlock, SwitchWithLabel }; \ No newline at end of file diff --git a/src/Popups.tsx b/src/Popups.tsx index e4e52e4..452db7c 100644 --- a/src/Popups.tsx +++ b/src/Popups.tsx @@ -1,7 +1,6 @@ import React from 'react'; import type { PropsWithChildren } from 'react'; import { - ScrollView, Text, View, } from 'react-native'; diff --git a/src/Styles.tsx b/src/Styles.tsx index 48b1528..96f24b8 100644 --- a/src/Styles.tsx +++ b/src/Styles.tsx @@ -22,19 +22,11 @@ const StylesContext = React.createContext<{ horizontalContainer: StyleProp; dalleImage: StyleProp; inlineCard: StyleProp; - dialogTitle: StyleProp; dialogSectionsContainer: StyleProp; dialogSection: StyleProp; dialogSectionHeader: StyleProp; - dialogBackground: StyleProp; - dialogContentArea: StyleProp; - dialogButtonBackground: StyleProp; - dialogButtons: StyleProp; codeBlockTitle: StyleProp; codeBlockTitleText: StyleProp; - hyperlinkIdle: StyleProp; - hyperlinkPressing: StyleProp; - hyperlinkHovering: StyleProp; }>({}); const CreateStyles = (isDarkMode: boolean) => { @@ -90,11 +82,6 @@ const CreateStyles = (isDarkMode: boolean) => { borderRadius: 8, padding: 8, }, - dialogTitle: { - fontWeight: '600', - fontSize: 20, - marginBottom: 12, - }, dialogSectionsContainer: { gap: 12, }, @@ -108,52 +95,12 @@ const CreateStyles = (isDarkMode: boolean) => { fontWeight: '600', marginBottom: 4, }, - dialogBackground: { - backgroundColor: isDarkMode ? '#292929' : '#FFFFFF', - paddingLeft: 12, - paddingRight: 12, - paddingTop: 12, - borderTopLeftRadius: 8, - borderTopRightRadius: 8, - minWidth: 320, - minHeight: 184, - }, - dialogContentArea: { - paddingBottom: 12, - }, - dialogButtonBackground: { - borderColor: isDarkMode ? '#1D1D1D': '#E5E5E5', - borderTopWidth: 1, - backgroundColor: isDarkMode ? '#202020' : '#F3F3F3', - borderBottomLeftRadius: 8, - borderBottomRightRadius: 8, - padding: 12, - }, - dialogButtons: { - marginTop: 12, - alignSelf: 'flex-end', - flexDirection: 'row', - flexWrap: 'wrap', - alignItems: 'center', - gap: 8, - }, codeBlockTitle: { backgroundColor: isDarkMode ? 'white' : '#444', }, codeBlockTitleText: { color: isDarkMode ? 'black' : 'white', }, - hyperlinkIdle: { - color: PlatformColor("HyperlinkButtonForeground"), - textDecorationLine: 'underline', - }, - hyperlinkPressing: { - color: PlatformColor("HyperlinkButtonForegroundPressed"), - }, - hyperlinkHovering: { - color: PlatformColor("HyperlinkButtonForegroundPointerOver"), - textDecorationLine: 'underline', - }, }); }