Live Table: https://diafygi.github.io/webcrypto-examples/
I couldn't find anywhere that had clear examples of WebCryptoAPI, so I wrote examples and made a live table with them. Pull requests welcome!
import SwiftUI | |
@available(iOS 14.0, *) | |
public struct ColorPickerWithoutLabel: UIViewRepresentable { | |
@Binding var selection: Color | |
var supportsAlpha: Bool = true | |
public init(selection: Binding<Color>, supportsAlpha: Bool = true) { | |
self._selection = selection | |
self.supportsAlpha = supportsAlpha |
import { z } from "zod"; | |
export const Fn = z.object({ | |
API: z | |
.string() | |
.url("Must be a URL") | |
.endsWith("/", { message: "URL must end with /" }), | |
Socket: z | |
.string() | |
.url("Must be a URL") |
<!DOCTYPE html> | |
<html> | |
<head> | |
<style> | |
canvas { | |
border: 1px solid black; | |
} | |
</style> | |
</head> | |
<body> |
Live Table: https://diafygi.github.io/webcrypto-examples/
I couldn't find anywhere that had clear examples of WebCryptoAPI, so I wrote examples and made a live table with them. Pull requests welcome!
People
:bowtie: |
😄 :smile: |
😆 :laughing: |
---|---|---|
😊 :blush: |
😃 :smiley: |
:relaxed: |
😏 :smirk: |
😍 :heart_eyes: |
😘 :kissing_heart: |
😚 :kissing_closed_eyes: |
😳 :flushed: |
😌 :relieved: |
😆 :satisfied: |
😁 :grin: |
😉 :wink: |
😜 :stuck_out_tongue_winking_eye: |
😝 :stuck_out_tongue_closed_eyes: |
😀 :grinning: |
😗 :kissing: |
😙 :kissing_smiling_eyes: |
😛 :stuck_out_tongue: |
let $follows = document.querySelector('div[data-testid="primaryColumn"] section > h1 + div[aria-label] > div') | |
let handles = new Set() | |
let finishTimeout | |
let observer | |
function finish() { | |
if (finishTimeout) { | |
clearTimeout(finishTimeout) | |
} | |
finishTimeout = setTimeout(() => { |
/* Hide... */ | |
/* Views on list tweets */ | |
[data-testid="tweet"][tabindex="0"] div[id^=id__][role=group] > div:nth-child(4):nth-last-child(2), | |
/* Views on focused tweet */ | |
[data-testid="tweet"][tabindex="-1"] div[dir] + div[aria-hidden="true"]:nth-child(2):nth-last-child(2), | |
[data-testid="tweet"][tabindex="-1"] div[dir] + div[aria-hidden="true"]:nth-child(2):nth-last-child(2) + div[dir]:last-child, | |
/* Bookmark button on focused tweet */ | |
[data-testid="tweet"][tabindex="-1"] div[id^=id__][role=group] > div:nth-child(4):nth-last-child(2), | |
/* Share button on all tweets */ | |
div[id^=id__][role=group] > div:nth-child(5):last-child, |
entities = $('#react-root')._reactRootContainer._internalRoot?.current?.memoizedState?.element?.props?.children?.props?.store?.getState()?.entities?.users?.entities | |
users = {} | |
for (let user of Object.values(entities)) { | |
users[user.screen_name] = user | |
} |
/* Nav item */ | |
a[title="Shorts"], | |
/* Video shelf in Home and Subscriptions */ | |
ytd-rich-shelf-renderer[is-shorts], | |
/* Video shelf in Search */ | |
ytd-reel-shelf-renderer { | |
display: none !important; | |
} | |
@supports selector(:has(*)) { |
let $segments = document.querySelector('.ytd-transcript-search-panel-renderer #segments-container') | |
let sections = [] | |
let parts = [] | |
for (let $el of $segments.children) { | |
if ($el.tagName == 'YTD-TRANSCRIPT-SECTION-HEADER-RENDERER') { | |
if (parts.length > 0) { | |
sections.push(parts.join(' ')) | |
parts = [] | |
} |