Skip to content

Instantly share code, notes, and snippets.

View ygkn's full-sized avatar
A believing heart is your magic.

YAGITA Yugo ygkn

A believing heart is your magic.
View GitHub Profile

リッチエディター移行ガイド: BlockNote → TipTap


フェーズ別の全体像

フェーズ 目的 主なアウトプット
① 現状把握 BlockNote 導入範囲・保存形式・拡張機能を棚卸 機能パリティ表・既存データスキーマ
② ギャップ分析 TipTap v3 で同等機能を実現する方法を決定(標準 Extension/自作 Extension/不要機能) 代替 Extension 一覧・実装方針
This file has been truncated, but you can view the full file.
{
"data": [
{
"ft4sc7hcq": "0Lc71XQL3wPpXwc",
"73U": 180.18418354947042,
"KwVMDaoN": "nzalDQ",
"odW": [
{
"v8Oxd": 34.45165560957663,
"L3TtaeQz": true,
@ygkn
ygkn / Watch.ts
Created September 24, 2024 03:46
"use client";
import { type ReactNode } from "react";
import {
type Control,
type FieldPath,
type FieldPathValue,
type FieldValues,
useWatch,
for file in *.tsx; do
cat > "${file%.tsx}.stories.tsx" << EOF
import { ${file%.tsx} } from "./${file%.tsx}";
import { Meta, StoryObj } from "@storybook/react";
const meta = {
component: ${file%.tsx},
} satisfies Meta<typeof ${file%.tsx}>;
export default meta;
import React from 'react';
import { getImageProps } from 'next/image';
import Accessibility from '../../assets/accessibility.svg';
import AvifImage from '../../assets/avif-test-image.avif';
const Component = (props) => {
const {
props: { srcSet: dark },
} = getImageProps({ src: Accessibility, alt: 'Theme Example', ...props });
const rules =
require("@typescript-eslint/eslint-plugin/use-at-your-own-risk/rules").default;
const displayRule = (ruleKey) => {
const rule = rules[ruleKey.replace("@typescript-eslint/", "")];
if (!rule) {
return ruleKey;
}
return `${rule.meta.deprecated ? " 💀" : ""} ${ruleKey} - ${
rule.meta.docs.description
@ygkn
ygkn / trtr.js
Created October 15, 2023 04:47
[..."タチツテト"].flatMap(c1 => [..."ラリルレロ"].map(c2 => `${c1}${c2}`.repeat(2))).join("\n")
@ygkn
ygkn / a.svg
Created October 12, 2023 13:03
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
import { type ReactRenderer, composeStories } from "@storybook/react";
import type { Store_CSFExports, PreparedStoryFn } from "@storybook/types";
import { render } from "@testing-library/react";
import { glob } from "glob";
import preview from "../.storybook/preview";
import { setProjectAnnotations } from "@storybook/react";
import { join } from "path";
openapi: 3.1.0
info:
title: TODO 管理ツール API
version: 1.0.0
servers:
- url: https://dev.example.com/api/v1
description: エンドポイント(開発)
- url: https://example.com/api/v1
description: エンドポイント(本番)
tags: