create-psytask 1.2.0-1 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2 @@
1
+
2
+ export { };
package/dist/index.js CHANGED
@@ -1,2 +1,98 @@
1
- #!/usr/bin/env node
2
- import{confirm as u,isCancel as p,outro as d,select as v,text as w}from"@clack/prompts";import i from"node:fs/promises";import c from"node:path";var f=c.join(import.meta.dirname,"../template"),o=async(e)=>{let t=await e;if(p(t))process.exit(0);return t},m=async(e,t)=>{let r=await i.readFile(e,"utf-8"),s=t(r);await i.writeFile(e,s)};(async()=>{let e=(await o(w({message:"Project name:",placeholder:"psytask-project",defaultValue:"psytask-project"}))).trim(),t=await o(u({message:"Use TypeScript?",initialValue:!1})),r=await o(v({message:"Select a bundler:",options:[{value:"vite"},{value:"bun"}],initialValue:"vite"})),s=c.join(process.cwd(),e);await i.access(s,i.constants.W_OK).then(async()=>{if(!await o(u({message:"Directory already exists. Do you want to overwrite it?",initialValue:!1})))return;await i.rm(s,{recursive:!0,force:!0})},()=>i.mkdir(s,{recursive:!0})),await i.cp(f,s,{recursive:!0});let a=c.join.bind(null,s),l=[m(a("package.json"),(n)=>JSON.stringify(Object.assign(JSON.parse(n),{name:e,scripts:r==="bun"?{dev:"bun index.html",build:"bun build index.html --outdir=dist --production","type-check":t?"tsc --noEmit":void 0}:{dev:"vite",build:"vite build",preview:"vite preview","type-check":t?"tsc --noEmit":void 0},devDependencies:{typescript:t?"^5":void 0,vite:r==="vite"?"^7":void 0}}),null,2))];if(!t)l.push(m(a("index.html"),(n)=>n.replace("main.ts","main.js")),i.rename(a("main.ts"),a("main.js")),i.rename(a("tsconfig.json"),a("jsconfig.json")));await Promise.all(l),d(`Project created successfully: ${s}`)})().catch((e)=>{console.error(e),process.exit(1)});
1
+ /** create-psytask v1.3.0 undefined undefined */
2
+ import { text, confirm, select, outro, isCancel } from '@clack/prompts';
3
+ import fs from 'node:fs/promises';
4
+ import path from 'node:path';
5
+
6
+ const templateDir = path.join(
7
+ import.meta.dirname,
8
+ (process.env.NODE_ENV === "production" ? "../" : "./") + "template"
9
+ );
10
+ const unwrap = async (maybeCancelPromise) => {
11
+ const result = await maybeCancelPromise;
12
+ if (isCancel(result)) {
13
+ process.exit(0);
14
+ }
15
+ return result;
16
+ };
17
+ const modify = async (filepath, replacer) => {
18
+ const content = await fs.readFile(filepath, "utf-8");
19
+ const modified = replacer(content);
20
+ await fs.writeFile(filepath, modified);
21
+ };
22
+ (async () => {
23
+ const projectName = (await unwrap(
24
+ text({
25
+ message: "Project name:",
26
+ placeholder: "psytask-project",
27
+ defaultValue: "psytask-project"
28
+ })
29
+ )).trim();
30
+ const useTypeScript = await unwrap(
31
+ confirm({ message: `Use TypeScript?`, initialValue: false })
32
+ );
33
+ const bundler = await unwrap(
34
+ select({
35
+ message: "Select a bundler:",
36
+ options: [{ value: "vite" }, { value: "bun" }],
37
+ initialValue: "vite"
38
+ })
39
+ );
40
+ const targetDir = path.join(process.cwd(), projectName);
41
+ await fs.access(targetDir, fs.constants.W_OK).then(
42
+ async () => {
43
+ const shouldOverwrite = await unwrap(
44
+ confirm({
45
+ message: `Directory already exists. Do you want to overwrite it?`,
46
+ initialValue: false
47
+ })
48
+ );
49
+ if (!shouldOverwrite) return;
50
+ await fs.rm(targetDir, { recursive: true, force: true });
51
+ },
52
+ () => fs.mkdir(targetDir, { recursive: true })
53
+ );
54
+ await fs.cp(templateDir, targetDir, { recursive: true });
55
+ const pth = path.join.bind(null, targetDir);
56
+ const modifyTasks = [
57
+ // package.json
58
+ modify(
59
+ pth("package.json"),
60
+ (content) => JSON.stringify(
61
+ Object.assign(JSON.parse(content), {
62
+ name: projectName,
63
+ scripts: bundler === "bun" ? {
64
+ dev: "bun index.html",
65
+ build: "bun build index.html --outdir=dist --production",
66
+ "type-check": useTypeScript ? "tsc --noEmit" : void 0
67
+ } : {
68
+ dev: "vite",
69
+ build: "vite build",
70
+ preview: "vite preview",
71
+ "type-check": useTypeScript ? "tsc --noEmit" : void 0
72
+ },
73
+ devDependencies: {
74
+ typescript: useTypeScript ? "^5" : void 0,
75
+ vite: bundler === "vite" ? "^7" : void 0
76
+ }
77
+ }),
78
+ null,
79
+ 2
80
+ )
81
+ )
82
+ ];
83
+ modifyTasks.push(
84
+ ...useTypeScript ? [fs.rm(pth("main.js"))] : [
85
+ modify(
86
+ pth("index.html"),
87
+ (content) => content.replace("main.ts", "main.js")
88
+ ),
89
+ fs.rm(pth("main.ts")),
90
+ fs.rename(pth("tsconfig.json"), pth("jsconfig.json"))
91
+ ]
92
+ );
93
+ await Promise.all(modifyTasks);
94
+ outro(`Project created successfully: ${targetDir}`);
95
+ })().catch((err) => {
96
+ console.error(err);
97
+ process.exit(1);
98
+ });
@@ -0,0 +1,36 @@
1
+ import"node:util";import m,{stdin as rD,stdout as sD}from"node:process";import L from"node:readline";import{Writable as iD}from"node:stream";import b from"node:fs/promises";import _ from"node:path";function CD(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var k,N;function nD(){if(N)return k;N=1;const e="\x1B",u=`${e}[`,t="\x07",F={to(D,i){return i?`${u}${i+1};${D+1}H`:`${u}${D+1}G`},move(D,i){let s="";return D<0?s+=`${u}${-D}D`:D>0&&(s+=`${u}${D}C`),i<0?s+=`${u}${-i}A`:i>0&&(s+=`${u}${i}B`),s},up:(D=1)=>`${u}${D}A`,down:(D=1)=>`${u}${D}B`,forward:(D=1)=>`${u}${D}C`,backward:(D=1)=>`${u}${D}D`,nextLine:(D=1)=>`${u}E`.repeat(D),prevLine:(D=1)=>`${u}F`.repeat(D),left:`${u}G`,hide:`${u}?25l`,show:`${u}?25h`,save:`${e}7`,restore:`${e}8`},r={up:(D=1)=>`${u}S`.repeat(D),down:(D=1)=>`${u}T`.repeat(D)},C={screen:`${u}2J`,up:(D=1)=>`${u}1J`.repeat(D),down:(D=1)=>`${u}J`.repeat(D),line:`${u}2K`,lineEnd:`${u}K`,lineStart:`${u}1K`,lines(D){let i="";for(let s=0;s<D;s++)i+=this.line+(s<D-1?F.up():"");return D&&(i+=F.left),i}};return k={cursor:F,scroll:r,erase:C,beep:t},k}var p=nD(),v={exports:{}},P;function oD(){if(P)return v.exports;P=1;let e=process||{},u=e.argv||[],t=e.env||{},F=!(t.NO_COLOR||u.includes("--no-color"))&&(!!t.FORCE_COLOR||u.includes("--color")||e.platform==="win32"||(e.stdout||{}).isTTY&&t.TERM!=="dumb"||!!t.CI),r=(i,s,E=i)=>l=>{let o=""+l,h=o.indexOf(s,i.length);return~h?i+C(o,s,E,h)+s:i+o+s},C=(i,s,E,l)=>{let o="",h=0;do o+=i.substring(h,l)+E,h=l+s.length,l=i.indexOf(s,h);while(~l);return o+i.substring(h)},D=(i=F)=>{let s=i?r:()=>String;return{isColorSupported:i,reset:s("\x1B[0m","\x1B[0m"),bold:s("\x1B[1m","\x1B[22m","\x1B[22m\x1B[1m"),dim:s("\x1B[2m","\x1B[22m","\x1B[22m\x1B[2m"),italic:s("\x1B[3m","\x1B[23m"),underline:s("\x1B[4m","\x1B[24m"),inverse:s("\x1B[7m","\x1B[27m"),hidden:s("\x1B[8m","\x1B[28m"),strikethrough:s("\x1B[9m","\x1B[29m"),black:s("\x1B[30m","\x1B[39m"),red:s("\x1B[31m","\x1B[39m"),green:s("\x1B[32m","\x1B[39m"),yellow:s("\x1B[33m","\x1B[39m"),blue:s("\x1B[34m","\x1B[39m"),magenta:s("\x1B[35m","\x1B[39m"),cyan:s("\x1B[36m","\x1B[39m"),white:s("\x1B[37m","\x1B[39m"),gray:s("\x1B[90m","\x1B[39m"),bgBlack:s("\x1B[40m","\x1B[49m"),bgRed:s("\x1B[41m","\x1B[49m"),bgGreen:s("\x1B[42m","\x1B[49m"),bgYellow:s("\x1B[43m","\x1B[49m"),bgBlue:s("\x1B[44m","\x1B[49m"),bgMagenta:s("\x1B[45m","\x1B[49m"),bgCyan:s("\x1B[46m","\x1B[49m"),bgWhite:s("\x1B[47m","\x1B[49m"),blackBright:s("\x1B[90m","\x1B[39m"),redBright:s("\x1B[91m","\x1B[39m"),greenBright:s("\x1B[92m","\x1B[39m"),yellowBright:s("\x1B[93m","\x1B[39m"),blueBright:s("\x1B[94m","\x1B[39m"),magentaBright:s("\x1B[95m","\x1B[39m"),cyanBright:s("\x1B[96m","\x1B[39m"),whiteBright:s("\x1B[97m","\x1B[39m"),bgBlackBright:s("\x1B[100m","\x1B[49m"),bgRedBright:s("\x1B[101m","\x1B[49m"),bgGreenBright:s("\x1B[102m","\x1B[49m"),bgYellowBright:s("\x1B[103m","\x1B[49m"),bgBlueBright:s("\x1B[104m","\x1B[49m"),bgMagentaBright:s("\x1B[105m","\x1B[49m"),bgCyanBright:s("\x1B[106m","\x1B[49m"),bgWhiteBright:s("\x1B[107m","\x1B[49m")}};return v.exports=D(),v.exports.createColors=D,v.exports}var ED=oD(),n=CD(ED);function aD({onlyFirst:e=!1}={}){const u=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");return new RegExp(u,e?void 0:"g")}const lD=aD();function G(e){if(typeof e!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);return e.replace(lD,"")}function z(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var K={exports:{}};(function(e){var u={};e.exports=u,u.eastAsianWidth=function(F){var r=F.charCodeAt(0),C=F.length==2?F.charCodeAt(1):0,D=r;return 55296<=r&&r<=56319&&56320<=C&&C<=57343&&(r&=1023,C&=1023,D=r<<10|C,D+=65536),D==12288||65281<=D&&D<=65376||65504<=D&&D<=65510?"F":D==8361||65377<=D&&D<=65470||65474<=D&&D<=65479||65482<=D&&D<=65487||65490<=D&&D<=65495||65498<=D&&D<=65500||65512<=D&&D<=65518?"H":4352<=D&&D<=4447||4515<=D&&D<=4519||4602<=D&&D<=4607||9001<=D&&D<=9002||11904<=D&&D<=11929||11931<=D&&D<=12019||12032<=D&&D<=12245||12272<=D&&D<=12283||12289<=D&&D<=12350||12353<=D&&D<=12438||12441<=D&&D<=12543||12549<=D&&D<=12589||12593<=D&&D<=12686||12688<=D&&D<=12730||12736<=D&&D<=12771||12784<=D&&D<=12830||12832<=D&&D<=12871||12880<=D&&D<=13054||13056<=D&&D<=19903||19968<=D&&D<=42124||42128<=D&&D<=42182||43360<=D&&D<=43388||44032<=D&&D<=55203||55216<=D&&D<=55238||55243<=D&&D<=55291||63744<=D&&D<=64255||65040<=D&&D<=65049||65072<=D&&D<=65106||65108<=D&&D<=65126||65128<=D&&D<=65131||110592<=D&&D<=110593||127488<=D&&D<=127490||127504<=D&&D<=127546||127552<=D&&D<=127560||127568<=D&&D<=127569||131072<=D&&D<=194367||177984<=D&&D<=196605||196608<=D&&D<=262141?"W":32<=D&&D<=126||162<=D&&D<=163||165<=D&&D<=166||D==172||D==175||10214<=D&&D<=10221||10629<=D&&D<=10630?"Na":D==161||D==164||167<=D&&D<=168||D==170||173<=D&&D<=174||176<=D&&D<=180||182<=D&&D<=186||188<=D&&D<=191||D==198||D==208||215<=D&&D<=216||222<=D&&D<=225||D==230||232<=D&&D<=234||236<=D&&D<=237||D==240||242<=D&&D<=243||247<=D&&D<=250||D==252||D==254||D==257||D==273||D==275||D==283||294<=D&&D<=295||D==299||305<=D&&D<=307||D==312||319<=D&&D<=322||D==324||328<=D&&D<=331||D==333||338<=D&&D<=339||358<=D&&D<=359||D==363||D==462||D==464||D==466||D==468||D==470||D==472||D==474||D==476||D==593||D==609||D==708||D==711||713<=D&&D<=715||D==717||D==720||728<=D&&D<=731||D==733||D==735||768<=D&&D<=879||913<=D&&D<=929||931<=D&&D<=937||945<=D&&D<=961||963<=D&&D<=969||D==1025||1040<=D&&D<=1103||D==1105||D==8208||8211<=D&&D<=8214||8216<=D&&D<=8217||8220<=D&&D<=8221||8224<=D&&D<=8226||8228<=D&&D<=8231||D==8240||8242<=D&&D<=8243||D==8245||D==8251||D==8254||D==8308||D==8319||8321<=D&&D<=8324||D==8364||D==8451||D==8453||D==8457||D==8467||D==8470||8481<=D&&D<=8482||D==8486||D==8491||8531<=D&&D<=8532||8539<=D&&D<=8542||8544<=D&&D<=8555||8560<=D&&D<=8569||D==8585||8592<=D&&D<=8601||8632<=D&&D<=8633||D==8658||D==8660||D==8679||D==8704||8706<=D&&D<=8707||8711<=D&&D<=8712||D==8715||D==8719||D==8721||D==8725||D==8730||8733<=D&&D<=8736||D==8739||D==8741||8743<=D&&D<=8748||D==8750||8756<=D&&D<=8759||8764<=D&&D<=8765||D==8776||D==8780||D==8786||8800<=D&&D<=8801||8804<=D&&D<=8807||8810<=D&&D<=8811||8814<=D&&D<=8815||8834<=D&&D<=8835||8838<=D&&D<=8839||D==8853||D==8857||D==8869||D==8895||D==8978||9312<=D&&D<=9449||9451<=D&&D<=9547||9552<=D&&D<=9587||9600<=D&&D<=9615||9618<=D&&D<=9621||9632<=D&&D<=9633||9635<=D&&D<=9641||9650<=D&&D<=9651||9654<=D&&D<=9655||9660<=D&&D<=9661||9664<=D&&D<=9665||9670<=D&&D<=9672||D==9675||9678<=D&&D<=9681||9698<=D&&D<=9701||D==9711||9733<=D&&D<=9734||D==9737||9742<=D&&D<=9743||9748<=D&&D<=9749||D==9756||D==9758||D==9792||D==9794||9824<=D&&D<=9825||9827<=D&&D<=9829||9831<=D&&D<=9834||9836<=D&&D<=9837||D==9839||9886<=D&&D<=9887||9918<=D&&D<=9919||9924<=D&&D<=9933||9935<=D&&D<=9953||D==9955||9960<=D&&D<=9983||D==10045||D==10071||10102<=D&&D<=10111||11093<=D&&D<=11097||12872<=D&&D<=12879||57344<=D&&D<=63743||65024<=D&&D<=65039||D==65533||127232<=D&&D<=127242||127248<=D&&D<=127277||127280<=D&&D<=127337||127344<=D&&D<=127386||917760<=D&&D<=917999||983040<=D&&D<=1048573||1048576<=D&&D<=1114109?"A":"N"},u.characterLength=function(F){var r=this.eastAsianWidth(F);return r=="F"||r=="W"||r=="A"?2:1};function t(F){return F.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g)||[]}u.length=function(F){for(var r=t(F),C=0,D=0;D<r.length;D++)C=C+this.characterLength(r[D]);return C},u.slice=function(F,r,C){textLen=u.length(F),r=r||0,C=C||1,r<0&&(r=textLen+r),C<0&&(C=textLen+C);for(var D="",i=0,s=t(F),E=0;E<s.length;E++){var l=s[E],o=u.length(l);if(i>=r-(o==2?1:0))if(i+o<=C)D+=l;else break;i+=o}return D}})(K);var cD=K.exports;const hD=z(cD);var BD=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g};const mD=z(BD);function d(e,u={}){if(typeof e!="string"||e.length===0||(u={ambiguousIsNarrow:!0,...u},e=G(e),e.length===0))return 0;e=e.replace(mD()," ");const t=u.ambiguousIsNarrow?1:2;let F=0;for(const r of e){const C=r.codePointAt(0);if(!(C<=31||C>=127&&C<=159||C>=768&&C<=879))switch(hD.eastAsianWidth(r)){case"F":case"W":F+=2;break;case"A":F+=t;break;default:F+=1}}return F}const j=10,Y=(e=0)=>u=>`\x1B[${u+e}m`,J=(e=0)=>u=>`\x1B[${38+e};5;${u}m`,q=(e=0)=>(u,t,F)=>`\x1B[${38+e};2;${u};${t};${F}m`,a={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};Object.keys(a.modifier);const pD=Object.keys(a.color),bD=Object.keys(a.bgColor);[...pD,...bD];function AD(){const e=new Map;for(const[u,t]of Object.entries(a)){for(const[F,r]of Object.entries(t))a[F]={open:`\x1B[${r[0]}m`,close:`\x1B[${r[1]}m`},t[F]=a[F],e.set(r[0],r[1]);Object.defineProperty(a,u,{value:t,enumerable:!1})}return Object.defineProperty(a,"codes",{value:e,enumerable:!1}),a.color.close="\x1B[39m",a.bgColor.close="\x1B[49m",a.color.ansi=Y(),a.color.ansi256=J(),a.color.ansi16m=q(),a.bgColor.ansi=Y(j),a.bgColor.ansi256=J(j),a.bgColor.ansi16m=q(j),Object.defineProperties(a,{rgbToAnsi256:{value:(u,t,F)=>u===t&&t===F?u<8?16:u>248?231:Math.round((u-8)/247*24)+232:16+36*Math.round(u/255*5)+6*Math.round(t/255*5)+Math.round(F/255*5),enumerable:!1},hexToRgb:{value:u=>{const t=/[a-f\d]{6}|[a-f\d]{3}/i.exec(u.toString(16));if(!t)return[0,0,0];let[F]=t;F.length===3&&(F=[...F].map(C=>C+C).join(""));const r=Number.parseInt(F,16);return[r>>16&255,r>>8&255,r&255]},enumerable:!1},hexToAnsi256:{value:u=>a.rgbToAnsi256(...a.hexToRgb(u)),enumerable:!1},ansi256ToAnsi:{value:u=>{if(u<8)return 30+u;if(u<16)return 90+(u-8);let t,F,r;if(u>=232)t=((u-232)*10+8)/255,F=t,r=t;else{u-=16;const i=u%36;t=Math.floor(u/36)/5,F=Math.floor(i/6)/5,r=i%6/5}const C=Math.max(t,F,r)*2;if(C===0)return 30;let D=30+(Math.round(r)<<2|Math.round(F)<<1|Math.round(t));return C===2&&(D+=60),D},enumerable:!1},rgbToAnsi:{value:(u,t,F)=>a.ansi256ToAnsi(a.rgbToAnsi256(u,t,F)),enumerable:!1},hexToAnsi:{value:u=>a.ansi256ToAnsi(a.hexToAnsi256(u)),enumerable:!1}}),a}const gD=AD(),x=new Set(["\x1B","\x9B"]),dD=39,M="\x07",U="[",fD="]",Z="m",S=`${fD}8;;`,H=e=>`${x.values().next().value}${U}${e}${Z}`,Q=e=>`${x.values().next().value}${S}${e}${M}`,vD=e=>e.split(" ").map(u=>d(u)),T=(e,u,t)=>{const F=[...u];let r=!1,C=!1,D=d(G(e[e.length-1]));for(const[i,s]of F.entries()){const E=d(s);if(D+E<=t?e[e.length-1]+=s:(e.push(s),D=0),x.has(s)&&(r=!0,C=F.slice(i+1).join("").startsWith(S)),r){C?s===M&&(r=!1,C=!1):s===Z&&(r=!1);continue}D+=E,D===t&&i<F.length-1&&(e.push(""),D=0)}!D&&e[e.length-1].length>0&&e.length>1&&(e[e.length-2]+=e.pop())},xD=e=>{const u=e.split(" ");let t=u.length;for(;t>0&&!(d(u[t-1])>0);)t--;return t===u.length?e:u.slice(0,t).join(" ")+u.slice(t).join("")},$D=(e,u,t={})=>{if(t.trim!==!1&&e.trim()==="")return"";let F="",r,C;const D=vD(e);let i=[""];for(const[E,l]of e.split(" ").entries()){t.trim!==!1&&(i[i.length-1]=i[i.length-1].trimStart());let o=d(i[i.length-1]);if(E!==0&&(o>=u&&(t.wordWrap===!1||t.trim===!1)&&(i.push(""),o=0),(o>0||t.trim===!1)&&(i[i.length-1]+=" ",o++)),t.hard&&D[E]>u){const h=u-o,g=1+Math.floor((D[E]-h-1)/u);Math.floor((D[E]-1)/u)<g&&i.push(""),T(i,l,u);continue}if(o+D[E]>u&&o>0&&D[E]>0){if(t.wordWrap===!1&&o<u){T(i,l,u);continue}i.push("")}if(o+D[E]>u&&t.wordWrap===!1){T(i,l,u);continue}i[i.length-1]+=l}t.trim!==!1&&(i=i.map(E=>xD(E)));const s=[...i.join(`
2
+ `)];for(const[E,l]of s.entries()){if(F+=l,x.has(l)){const{groups:h}=new RegExp(`(?:\\${U}(?<code>\\d+)m|\\${S}(?<uri>.*)${M})`).exec(s.slice(E).join(""))||{groups:{}};if(h.code!==void 0){const g=Number.parseFloat(h.code);r=g===dD?void 0:g}else h.uri!==void 0&&(C=h.uri.length===0?void 0:h.uri)}const o=gD.codes.get(Number(r));s[E+1]===`
3
+ `?(C&&(F+=Q("")),r&&o&&(F+=H(o))):l===`
4
+ `&&(r&&o&&(F+=H(r)),C&&(F+=Q(C)))}return F};function X(e,u,t){return String(e).normalize().replace(/\r\n/g,`
5
+ `).split(`
6
+ `).map(F=>$D(F,u,t)).join(`
7
+ `)}const wD=["up","down","left","right","space","enter","cancel"],$={actions:new Set(wD),aliases:new Map([["k","up"],["j","down"],["h","left"],["l","right"],["","cancel"],["escape","cancel"]])};function DD(e,u){if(typeof e=="string")return $.aliases.get(e)===u;for(const t of e)if(t!==void 0&&DD(t,u))return!0;return!1}function yD(e,u){if(e===u)return;const t=e.split(`
8
+ `),F=u.split(`
9
+ `),r=[];for(let C=0;C<Math.max(t.length,F.length);C++)t[C]!==F[C]&&r.push(C);return r}globalThis.process.platform.startsWith("win");const O=Symbol("clack:cancel");function _D(e){return e===O}function w(e,u){const t=e;t.isTTY&&t.setRawMode(u)}var kD=Object.defineProperty,jD=(e,u,t)=>u in e?kD(e,u,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[u]=t,B=(e,u,t)=>(jD(e,typeof u!="symbol"?u+"":u,t),t);class R{constructor(u,t=!0){B(this,"input"),B(this,"output"),B(this,"_abortSignal"),B(this,"rl"),B(this,"opts"),B(this,"_render"),B(this,"_track",!1),B(this,"_prevFrame",""),B(this,"_subscribers",new Map),B(this,"_cursor",0),B(this,"state","initial"),B(this,"error",""),B(this,"value");const{input:F=rD,output:r=sD,render:C,signal:D,...i}=u;this.opts=i,this.onKeypress=this.onKeypress.bind(this),this.close=this.close.bind(this),this.render=this.render.bind(this),this._render=C.bind(this),this._track=t,this._abortSignal=D,this.input=F,this.output=r}unsubscribe(){this._subscribers.clear()}setSubscriber(u,t){const F=this._subscribers.get(u)??[];F.push(t),this._subscribers.set(u,F)}on(u,t){this.setSubscriber(u,{cb:t})}once(u,t){this.setSubscriber(u,{cb:t,once:!0})}emit(u,...t){const F=this._subscribers.get(u)??[],r=[];for(const C of F)C.cb(...t),C.once&&r.push(()=>F.splice(F.indexOf(C),1));for(const C of r)C()}prompt(){return new Promise((u,t)=>{if(this._abortSignal){if(this._abortSignal.aborted)return this.state="cancel",this.close(),u(O);this._abortSignal.addEventListener("abort",()=>{this.state="cancel",this.close()},{once:!0})}const F=new iD;F._write=(r,C,D)=>{this._track&&(this.value=this.rl?.line.replace(/\t/g,""),this._cursor=this.rl?.cursor??0,this.emit("value",this.value)),D()},this.input.pipe(F),this.rl=L.createInterface({input:this.input,output:F,tabSize:2,prompt:"",escapeCodeTimeout:50,terminal:!0}),L.emitKeypressEvents(this.input,this.rl),this.rl.prompt(),this.opts.initialValue!==void 0&&this._track&&this.rl.write(this.opts.initialValue),this.input.on("keypress",this.onKeypress),w(this.input,!0),this.output.on("resize",this.render),this.render(),this.once("submit",()=>{this.output.write(p.cursor.show),this.output.off("resize",this.render),w(this.input,!1),u(this.value)}),this.once("cancel",()=>{this.output.write(p.cursor.show),this.output.off("resize",this.render),w(this.input,!1),u(O)})})}onKeypress(u,t){if(this.state==="error"&&(this.state="active"),t?.name&&(!this._track&&$.aliases.has(t.name)&&this.emit("cursor",$.aliases.get(t.name)),$.actions.has(t.name)&&this.emit("cursor",t.name)),u&&(u.toLowerCase()==="y"||u.toLowerCase()==="n")&&this.emit("confirm",u.toLowerCase()==="y"),u===" "&&this.opts.placeholder&&(this.value||(this.rl?.write(this.opts.placeholder),this.emit("value",this.opts.placeholder))),u&&this.emit("key",u.toLowerCase()),t?.name==="return"){if(this.opts.validate){const F=this.opts.validate(this.value);F&&(this.error=F instanceof Error?F.message:F,this.state="error",this.rl?.write(this.value))}this.state!=="error"&&(this.state="submit")}DD([u,t?.name,t?.sequence],"cancel")&&(this.state="cancel"),(this.state==="submit"||this.state==="cancel")&&this.emit("finalize"),this.render(),(this.state==="submit"||this.state==="cancel")&&this.close()}close(){this.input.unpipe(),this.input.removeListener("keypress",this.onKeypress),this.output.write(`
10
+ `),w(this.input,!1),this.rl?.close(),this.rl=void 0,this.emit(`${this.state}`,this.value),this.unsubscribe()}restoreCursor(){const u=X(this._prevFrame,process.stdout.columns,{hard:!0}).split(`
11
+ `).length-1;this.output.write(p.cursor.move(-999,u*-1))}render(){const u=X(this._render(this)??"",process.stdout.columns,{hard:!0});if(u!==this._prevFrame){if(this.state==="initial")this.output.write(p.cursor.hide);else{const t=yD(this._prevFrame,u);if(this.restoreCursor(),t&&t?.length===1){const F=t[0];this.output.write(p.cursor.move(0,F)),this.output.write(p.erase.lines(1));const r=u.split(`
12
+ `);this.output.write(r[F]),this._prevFrame=u,this.output.write(p.cursor.move(0,r.length-F-1));return}if(t&&t?.length>1){const F=t[0];this.output.write(p.cursor.move(0,F)),this.output.write(p.erase.down());const r=u.split(`
13
+ `).slice(F);this.output.write(r.join(`
14
+ `)),this._prevFrame=u;return}this.output.write(p.erase.down())}this.output.write(u),this.state==="initial"&&(this.state="active"),this._prevFrame=u}}}class MD extends R{get cursor(){return this.value?0:1}get _value(){return this.cursor===0}constructor(u){super(u,!1),this.value=!!u.initialValue,this.on("value",()=>{this.value=this._value}),this.on("confirm",t=>{this.output.write(p.cursor.move(0,-1)),this.value=t,this.state="submit",this.close()}),this.on("cursor",()=>{this.value=!this.value})}}var SD=Object.defineProperty,TD=(e,u,t)=>u in e?SD(e,u,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[u]=t,uD=(e,u,t)=>(TD(e,typeof u!="symbol"?u+"":u,t),t);class OD extends R{constructor(u){super(u,!1),uD(this,"options"),uD(this,"cursor",0),this.options=u.options,this.cursor=this.options.findIndex(({value:t})=>t===u.initialValue),this.cursor===-1&&(this.cursor=0),this.changeValue(),this.on("cursor",t=>{switch(t){case"left":case"up":this.cursor=this.cursor===0?this.options.length-1:this.cursor-1;break;case"down":case"right":this.cursor=this.cursor===this.options.length-1?0:this.cursor+1;break}this.changeValue()})}get _value(){return this.options[this.cursor]}changeValue(){this.value=this._value.value}}class RD extends R{get valueWithCursor(){if(this.state==="submit")return this.value;if(this.cursor>=this.value.length)return`${this.value}\u2588`;const u=this.value.slice(0,this.cursor),[t,...F]=this.value.slice(this.cursor);return`${u}${n.inverse(t)}${F.join("")}`}get cursor(){return this._cursor}constructor(u){super(u),this.on("finalize",()=>{this.value||(this.value=u.defaultValue)})}}function VD(){return m.platform!=="win32"?m.env.TERM!=="linux":!!m.env.CI||!!m.env.WT_SESSION||!!m.env.TERMINUS_SUBLIME||m.env.ConEmuTask==="{cmd::Cmder}"||m.env.TERM_PROGRAM==="Terminus-Sublime"||m.env.TERM_PROGRAM==="vscode"||m.env.TERM==="xterm-256color"||m.env.TERM==="alacritty"||m.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}const WD=VD(),A=(e,u)=>WD?e:u,ID=A("\u25C6","*"),LD=A("\u25A0","x"),ND=A("\u25B2","x"),PD=A("\u25C7","o"),c=A("\u2502","|"),f=A("\u2514","\u2014"),V=A("\u25CF",">"),W=A("\u25CB"," "),I=e=>{switch(e){case"initial":case"active":return n.cyan(ID);case"cancel":return n.red(LD);case"error":return n.yellow(ND);case"submit":return n.green(PD)}},GD=e=>{const{cursor:u,options:t,style:F}=e,r=e.maxItems??Number.POSITIVE_INFINITY,C=Math.max(process.stdout.rows-4,0),D=Math.min(C,Math.max(r,5));let i=0;u>=i+D-3?i=Math.max(Math.min(u-D+3,t.length-D),0):u<i+2&&(i=Math.max(u-2,0));const s=D<t.length&&i>0,E=D<t.length&&i+D<t.length;return t.slice(i,i+D).map((l,o,h)=>{const g=o===0&&s,FD=o===h.length-1&&E;return g||FD?n.dim("..."):F(l,o+i===u)})},zD=e=>new RD({validate:e.validate,placeholder:e.placeholder,defaultValue:e.defaultValue,initialValue:e.initialValue,render(){const u=`${n.gray(c)}
15
+ ${I(this.state)} ${e.message}
16
+ `,t=e.placeholder?n.inverse(e.placeholder[0])+n.dim(e.placeholder.slice(1)):n.inverse(n.hidden("_")),F=this.value?this.valueWithCursor:t;switch(this.state){case"error":return`${u.trim()}
17
+ ${n.yellow(c)} ${F}
18
+ ${n.yellow(f)} ${n.yellow(this.error)}
19
+ `;case"submit":return`${u}${n.gray(c)} ${n.dim(this.value||e.placeholder)}`;case"cancel":return`${u}${n.gray(c)} ${n.strikethrough(n.dim(this.value??""))}${this.value?.trim()?`
20
+ ${n.gray(c)}`:""}`;default:return`${u}${n.cyan(c)} ${F}
21
+ ${n.cyan(f)}
22
+ `}}}).prompt(),eD=e=>{const u=e.active??"Yes",t=e.inactive??"No";return new MD({active:u,inactive:t,initialValue:e.initialValue??!0,render(){const F=`${n.gray(c)}
23
+ ${I(this.state)} ${e.message}
24
+ `,r=this.value?u:t;switch(this.state){case"submit":return`${F}${n.gray(c)} ${n.dim(r)}`;case"cancel":return`${F}${n.gray(c)} ${n.strikethrough(n.dim(r))}
25
+ ${n.gray(c)}`;default:return`${F}${n.cyan(c)} ${this.value?`${n.green(V)} ${u}`:`${n.dim(W)} ${n.dim(u)}`} ${n.dim("/")} ${this.value?`${n.dim(W)} ${n.dim(t)}`:`${n.green(V)} ${t}`}
26
+ ${n.cyan(f)}
27
+ `}}}).prompt()},KD=e=>{const u=(t,F)=>{const r=t.label??String(t.value);switch(F){case"selected":return`${n.dim(r)}`;case"active":return`${n.green(V)} ${r} ${t.hint?n.dim(`(${t.hint})`):""}`;case"cancelled":return`${n.strikethrough(n.dim(r))}`;default:return`${n.dim(W)} ${n.dim(r)}`}};return new OD({options:e.options,initialValue:e.initialValue,render(){const t=`${n.gray(c)}
28
+ ${I(this.state)} ${e.message}
29
+ `;switch(this.state){case"submit":return`${t}${n.gray(c)} ${u(this.options[this.cursor],"selected")}`;case"cancel":return`${t}${n.gray(c)} ${u(this.options[this.cursor],"cancelled")}
30
+ ${n.gray(c)}`;default:return`${t}${n.cyan(c)} ${GD({cursor:this.cursor,options:this.options,maxItems:e.maxItems,style:(F,r)=>u(F,r?"active":"inactive")}).join(`
31
+ ${n.cyan(c)} `)}
32
+ ${n.cyan(f)}
33
+ `}}}).prompt()},YD=(e="")=>{process.stdout.write(`${n.gray(c)}
34
+ ${n.gray(f)} ${e}
35
+
36
+ `)};`${n.gray(c)}`;const JD=_.join(import.meta.dirname,(process.env.NODE_ENV==="production"?"../":"./")+"template"),y=async e=>{const u=await e;return _D(u)&&process.exit(0),u},tD=async(e,u)=>{const t=await b.readFile(e,"utf-8"),F=u(t);await b.writeFile(e,F)};(async()=>{const e=(await y(zD({message:"Project name:",placeholder:"psytask-project",defaultValue:"psytask-project"}))).trim(),u=await y(eD({message:"Use TypeScript?",initialValue:!1})),t=await y(KD({message:"Select a bundler:",options:[{value:"vite"},{value:"bun"}],initialValue:"vite"})),F=_.join(process.cwd(),e);await b.access(F,b.constants.W_OK).then(async()=>{await y(eD({message:"Directory already exists. Do you want to overwrite it?",initialValue:!1}))&&await b.rm(F,{recursive:!0,force:!0})},()=>b.mkdir(F,{recursive:!0})),await b.cp(JD,F,{recursive:!0});const r=_.join.bind(null,F),C=[tD(r("package.json"),D=>JSON.stringify(Object.assign(JSON.parse(D),{name:e,scripts:t==="bun"?{dev:"bun index.html",build:"bun build index.html --outdir=dist --production","type-check":u?"tsc --noEmit":void 0}:{dev:"vite",build:"vite build",preview:"vite preview","type-check":u?"tsc --noEmit":void 0},devDependencies:{typescript:u?"^5":void 0,vite:t==="vite"?"^7":void 0}}),null,2))];C.push(...u?[b.rm(r("main.js"))]:[tD(r("index.html"),D=>D.replace("main.ts","main.js")),b.rm(r("main.ts")),b.rename(r("tsconfig.json"),r("jsconfig.json"))]),await Promise.all(C),YD(`Project created successfully: ${F}`)})().catch(e=>{console.error(e),process.exit(1)});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-psytask",
3
- "version": "1.2.0-1",
3
+ "version": "1.3.0",
4
4
  "description": "CLI tool to create PsyTask project",
5
5
  "type": "module",
6
6
  "engines": {
@@ -0,0 +1,37 @@
1
+ import { adapter } from '@psytask/components';
2
+ import { createApp } from 'psytask';
3
+ import van from 'vanjs-core';
4
+
5
+ const { a, div } = van.tags;
6
+
7
+ using app = await createApp();
8
+ using dc = app.collector('demo.csv');
9
+
10
+ using simpleText = app.scene(
11
+ /** @param {{ content: import('psytask').NodeLike }} props */
12
+ (props) => div({ class: 'psytask-center' }, () => props.content),
13
+ { defaultProps: { content: '' }, adapter },
14
+ );
15
+
16
+ await simpleText.show({
17
+ content: div(
18
+ 'Welcome to PsyTask template!\nsee more ',
19
+ a(
20
+ { href: 'https://bluebonesx.github.io/psytask/play/', target: '_blank' },
21
+ 'Information & Examples',
22
+ ),
23
+ '\n\nClick to continue.',
24
+ ),
25
+ });
26
+ for (let i = 0; i < 3; i++) {
27
+ const { start_time } = await simpleText.show({
28
+ content: `This is trial ${i + 1}. Click to continue.`,
29
+ });
30
+
31
+ dc.add({ index: i + 1, start_time });
32
+ }
33
+
34
+ // show data on page and download
35
+ document.body.style.whiteSpace = 'pre-wrap';
36
+ document.body.textContent = dc.final();
37
+ dc.download();
package/template/main.ts CHANGED
@@ -24,11 +24,11 @@ await simpleText.show({
24
24
  ),
25
25
  });
26
26
  for (let i = 0; i < 3; i++) {
27
- const { frame_times } = await simpleText.show({
27
+ const { start_time } = await simpleText.show({
28
28
  content: `This is trial ${i + 1}. Click to continue.`,
29
29
  });
30
30
 
31
- dc.add({ index: i + 1, start_time: frame_times[0]! });
31
+ dc.add({ index: i + 1, start_time });
32
32
  }
33
33
 
34
34
  // show data on page and download