@wallet-ui/core
Version:
Wallet UI core
379 lines (364 loc) • 11.2 kB
JavaScript
this.globalThis = this.globalThis || {};
this.globalThis.solanaWeb3 = (function (exports) {
'use strict';
var __defProp = Object.defineProperty;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __publicField = (obj, key, value) => __defNormalProp(obj, key + "" , value);
// src/clusters.ts
function createSolanaCluster(props, { id, label, url }) {
var _a, _b;
if (typeof props === "string") {
return { id, label, url: props };
}
return { id, label: (_a = props.label) != null ? _a : label, url: (_b = props.url) != null ? _b : url };
}
function createSolanaDevnet(props = {}) {
return createSolanaCluster(props, {
id: "solana:devnet",
label: "Devnet",
url: "devnet"
});
}
function createSolanaLocalnet(props = {}) {
return createSolanaCluster(props, {
id: "solana:localnet",
label: "Localnet",
url: "localnet"
});
}
function createSolanaMainnet(props = {}) {
return createSolanaCluster(props, {
id: "solana:mainnet",
label: "Mainnet",
url: "mainnet"
});
}
function createSolanaTestnet(props = {}) {
return createSolanaCluster(props, {
id: "solana:testnet",
label: "Testnet",
url: "testnet"
});
}
// ../../node_modules/.pnpm/nanostores@1.0.1/node_modules/nanostores/clean-stores/index.js
var clean = Symbol("clean");
// ../../node_modules/.pnpm/nanostores@1.0.1/node_modules/nanostores/atom/index.js
var listenerQueue = [];
var lqIndex = 0;
var QUEUE_ITEMS_PER_LISTENER = 4;
var epoch = 0;
var atom = (initialValue) => {
let listeners = [];
let $atom = {
get() {
if (!$atom.lc) {
$atom.listen(() => {
})();
}
return $atom.value;
},
lc: 0,
listen(listener) {
$atom.lc = listeners.push(listener);
return () => {
for (let i = lqIndex + QUEUE_ITEMS_PER_LISTENER; i < listenerQueue.length; ) {
if (listenerQueue[i] === listener) {
listenerQueue.splice(i, QUEUE_ITEMS_PER_LISTENER);
} else {
i += QUEUE_ITEMS_PER_LISTENER;
}
}
let index = listeners.indexOf(listener);
if (~index) {
listeners.splice(index, 1);
if (!--$atom.lc) $atom.off();
}
};
},
notify(oldValue, changedKey) {
epoch++;
let runListenerQueue = !listenerQueue.length;
for (let listener of listeners) {
listenerQueue.push(listener, $atom.value, oldValue, changedKey);
}
if (runListenerQueue) {
for (lqIndex = 0; lqIndex < listenerQueue.length; lqIndex += QUEUE_ITEMS_PER_LISTENER) {
listenerQueue[lqIndex](
listenerQueue[lqIndex + 1],
listenerQueue[lqIndex + 2],
listenerQueue[lqIndex + 3]
);
}
listenerQueue.length = 0;
}
},
/* It will be called on last listener unsubscribing.
We will redefine it in onMount and onStop. */
off() {
},
set(newValue) {
let oldValue = $atom.value;
if (oldValue !== newValue) {
$atom.value = newValue;
$atom.notify(oldValue);
}
},
subscribe(listener) {
let unbind = $atom.listen(listener);
listener($atom.value);
return unbind;
},
value: initialValue
};
{
$atom[clean] = () => {
listeners = [];
$atom.lc = 0;
$atom.off();
};
}
return $atom;
};
// ../../node_modules/.pnpm/nanostores@1.0.1/node_modules/nanostores/lifecycle/index.js
var MOUNT = 5;
var UNMOUNT = 6;
var REVERT_MUTATION = 10;
var on = (object, listener, eventKey, mutateStore) => {
object.events = object.events || {};
if (!object.events[eventKey + REVERT_MUTATION]) {
object.events[eventKey + REVERT_MUTATION] = mutateStore((eventProps) => {
object.events[eventKey].reduceRight((event, l) => (l(event), event), {
shared: {},
...eventProps
});
});
}
object.events[eventKey] = object.events[eventKey] || [];
object.events[eventKey].push(listener);
return () => {
let currentListeners = object.events[eventKey];
let index = currentListeners.indexOf(listener);
currentListeners.splice(index, 1);
if (!currentListeners.length) {
delete object.events[eventKey];
object.events[eventKey + REVERT_MUTATION]();
delete object.events[eventKey + REVERT_MUTATION];
}
};
};
var STORE_UNMOUNT_DELAY = 1e3;
var onMount = ($store, initialize) => {
let listener = (payload) => {
let destroy = initialize(payload);
if (destroy) $store.events[UNMOUNT].push(destroy);
};
return on($store, listener, MOUNT, (runListeners) => {
let originListen = $store.listen;
$store.listen = (...args) => {
if (!$store.lc && !$store.active) {
$store.active = true;
runListeners();
}
return originListen(...args);
};
let originOff = $store.off;
$store.events[UNMOUNT] = [];
$store.off = () => {
originOff();
setTimeout(() => {
if ($store.active && !$store.lc) {
$store.active = false;
for (let destroy of $store.events[UNMOUNT]) destroy();
$store.events[UNMOUNT] = [];
}
}, STORE_UNMOUNT_DELAY);
};
{
let originClean = $store[clean];
$store[clean] = () => {
for (let destroy of $store.events[UNMOUNT]) destroy();
$store.events[UNMOUNT] = [];
$store.active = false;
originClean();
};
}
return () => {
$store.listen = originListen;
$store.off = originOff;
};
});
};
// ../../node_modules/.pnpm/nanostores@1.0.1/node_modules/nanostores/computed/index.js
var computedStore = (stores, cb, batched2) => {
if (!Array.isArray(stores)) stores = [stores];
let previousArgs;
let currentEpoch;
let set = () => {
if (currentEpoch === epoch) return;
currentEpoch = epoch;
let args = stores.map(($store) => $store.get());
if (!previousArgs || args.some((arg, i) => arg !== previousArgs[i])) {
previousArgs = args;
let value = cb(...args);
if (value && value.then && value.t) {
value.then((asyncValue) => {
if (previousArgs === args) {
$computed.set(asyncValue);
}
});
} else {
$computed.set(value);
currentEpoch = epoch;
}
}
};
let $computed = atom(void 0);
let get = $computed.get;
$computed.get = () => {
set();
return get();
};
let run = set;
onMount($computed, () => {
let unbinds = stores.map(($store) => $store.listen(run));
set();
return () => {
for (let unbind of unbinds) unbind();
};
});
return $computed;
};
var computed = (stores, fn) => computedStore(stores, fn);
// ../../node_modules/.pnpm/@nanostores+persistent@1.1.0_nanostores@1.0.1/node_modules/@nanostores/persistent/index.js
var identity = (a) => a;
var storageEngine = {};
var eventsEngine = { addEventListener() {
}, removeEventListener() {
} };
function testSupport() {
try {
return typeof localStorage !== "undefined";
} catch {
return false;
}
}
if (testSupport()) {
storageEngine = localStorage;
}
var windowPersistentEvents = {
addEventListener(key, listener, restore) {
window.addEventListener("storage", listener);
window.addEventListener("pageshow", restore);
},
removeEventListener(key, listener, restore) {
window.removeEventListener("storage", listener);
window.removeEventListener("pageshow", restore);
}
};
if (typeof window !== "undefined") {
eventsEngine = windowPersistentEvents;
}
function persistentAtom(name, initial = void 0, opts = {}) {
let encode = opts.encode || identity;
let decode = opts.decode || identity;
let store = atom(initial);
let set = store.set;
store.set = (newValue) => {
let converted = encode(newValue);
if (typeof converted === "undefined") {
delete storageEngine[name];
} else {
storageEngine[name] = converted;
}
set(newValue);
};
function listener(e) {
if (e.key === name) {
if (e.newValue === null) {
set(initial);
} else {
set(decode(e.newValue));
}
} else if (!storageEngine[name]) {
set(initial);
}
}
function restore() {
store.set(storageEngine[name] ? decode(storageEngine[name]) : initial);
}
onMount(store, () => {
restore();
if (opts.listen !== false) {
eventsEngine.addEventListener(name, listener, restore);
return () => {
eventsEngine.removeEventListener(name, listener, restore);
};
}
});
return store;
}
// src/storage.ts
var Storage = class {
constructor(key, initial) {
this.key = key;
this.initial = initial;
__publicField(this, "atom");
this.atom = persistentAtom(key, initial, { decode: JSON.parse, encode: JSON.stringify });
}
get() {
return this.atom.get();
}
set(value) {
this.atom.set(value);
}
get value() {
return computed(this.atom, (value) => value);
}
};
// src/create-storage.ts
function createStorage({ initial, key }) {
return new Storage(key, initial);
}
// src/create-storage-account.ts
function createStorageAccount({
initial,
key
} = {}) {
return createStorage({
initial,
key: key != null ? key : "wallet-ui:account"
});
}
// src/create-storage-cluster.ts
function createStorageCluster({
initial,
key
} = {}) {
return createStorage({
initial: initial != null ? initial : "solana:devnet",
key: key != null ? key : "wallet-ui:cluster"
});
}
// src/handle-copy-text.ts
function handleCopyText(text) {
if (!text) {
return;
}
if (typeof globalThis === "undefined" || !globalThis.navigator || !globalThis.navigator.clipboard || !globalThis.navigator.clipboard.writeText) {
return;
}
void globalThis.navigator.clipboard.writeText(text);
}
exports.Storage = Storage;
exports.createSolanaDevnet = createSolanaDevnet;
exports.createSolanaLocalnet = createSolanaLocalnet;
exports.createSolanaMainnet = createSolanaMainnet;
exports.createSolanaTestnet = createSolanaTestnet;
exports.createStorage = createStorage;
exports.createStorageAccount = createStorageAccount;
exports.createStorageCluster = createStorageCluster;
exports.handleCopyText = handleCopyText;
return exports;
})({});
//# sourceMappingURL=index.development.js.map
//# sourceMappingURL=index.development.js.map