diff --git a/docs/assets/sample/danmuku-v2.xml b/docs/assets/sample/danmuku-v2.xml new file mode 100644 index 000000000..01bfd94f5 --- /dev/null +++ b/docs/assets/sample/danmuku-v2.xml @@ -0,0 +1 @@ +11724691泷:三叶,请记住我的名字“I LOVE YOU”泷:三叶,请记住我的名字“I LOVE YOU”泷:三叶,请记住我的名字“I LOVE YOU”泷:三叶,请记住我的名字“I LOVE YOU”泷:三叶,请记住我的名字“I LOVE YOU” 被秀了一脸恩爱和素未相识的网友一起配对啦!有点小激动~配对成功,领到票了!~感谢B站!长理携手同行~君之名南宁单身狗的愤怒!!!!抢不到票!只能买!!!真·神作小僚机,我知道你会来看十个在哭,九个在狂笑(指鬼畜)我要把我欠的票都还了新海诚的票该还了!清露,牵手一起看吧呐,媳妇,我们一起看吧,然后订婚吧你们能够理解我找妹子但是她登陆不上最后迫不得已和室友配对成功,妹子又能登陆了诚哥已经暴走碾压票房了希望下辈子可以做个东京的帅哥你的名字并出示你的驾驶证,你已经违规超速希望下辈子可以做个东京的帅哥你的名字,茨木童子结果跟基友看了。。。bgm是黄昏之时 32秒开始看的时候几乎从中间就开始哭,哭到坐车回家的路上还是在哭一个被鬼畜区玩坏的新海诚作品预告把之前欠诚哥的电影票还了!!!!今晚逃晚自习来看一天看 十次的节奏已订票!!!坐标成都!!清晨,我睁开眼睛时看完超级感动!!!!想和喜欢的人一起去看!!!你的名字是——SXY钟晋我们一起去看吧荧荧。我们一起去看好吗。目が覚めると呐,媳妇,我们一起看吧,然后订婚吧小祁啊~好想和你一起去看啊Morphine,其实Sekka想跟你一起去好的 安徒生邓云遥,我们一起去看吧~宝贝,咱俩一起看同南宁,估计又得自己去淘票了!不知道为什么只是看见这个开头就有种想哭的感没抢到票。。。准备买票了,电影院的画质一定美哭老王。看得到不想跟你一起去看,腚腚!欢迎来到全民表白墙想和黄从恩一起去看表扬一下国语配音 毫无违和感 非常非常赞虽然忘记了你的名字,但身体还记得原版预告那个 把老子的意大利炮拿过来预告片都好燃 好喜欢 够我无限循环了这个预告片被做成鬼畜素材卧槽质量好到爆炸了我大天朝良心啊!预告片1分50秒!日本官方预告片1分30秒,凯,想和你一起看,你还记得我吗?壁纸狂魔:新海诚(手动滑稽)送一张大连的票,评论区1421楼本人男!找个同性一起约啊!滑稽表情上面原版地址的站住,我给你加个红buff我在电影院看了两遍,云盘5遍预告片,大陆这版做的最为优秀好温柔的声音,大爱“爱”就是科学与逻辑永远无法解释的程序。天气之子回来的为了那份感动,我一定会去看的章佳宁子 一起去看吧!佳婧 你个小懒猫!一个人看的寂寞可怜我都找不到一个可以留下来的名字抢到佛山万达!谁要我送给谁!欢迎来到情人火葬场小黑,我一直都想和你在一起,就算我早已从你的联系人列表中被删不管你在世界的哪里,我一定会再次去见你现在开始公布死亡名单半处陨落命铭,意所回之三年。佛换世心印己,可美无心所结。一般般我也就看了100多遍而已无数次刷预告片,如果电影院能在上映就好了三叶的口嚼酒喝到肝硬化的站住,我能喝到肾衰~翻译质量:台湾≧大陆>香港>新加坡想哭 真心感触深为啥有三次元的图一直忍着没找资源,终于等到了可惜,她已经拒绝我去看你的名字了、呐,辰,能一起看嘛?希望你还记得我啊。Morphie,Sekka想跟你一起去看来只能自己掏腰包买票了韩煦你是我的人,一起看吧柳叔叔请务必跟我去看!愿天下有情人终成兄妹是原声 不敢想象国语版……半处陨落命铭,意所回之三年。佛换世心印己,可美无心所结。看完中毒了,越看中毒越深,新海诚你算计我..........“爱”就是科学与逻辑永远无法解释的程序。电影票已经预定清露清露,一起去看电影吧!·贞我们去看吧呐,辰,能一起看嘛?希望你还记得我啊。右手,咱俩一起去看吧……沏,一起去看吧。↑八年级下册语文老师也是这名字不管你在世界的哪里,我一定会再次去见你就在今晚我要一直和你在一起本大爷下次要做个漂亮的小姐姐 芒果这段话好喜欢宫水三叶立花泷,夫妻携手战B萌。泷叶八进四生死局,请大家投票支援!朝目が覚めると なぜか泣いている 考古看完,贼感动,!钟晋,我们一起去看吧尽管不在一个地方,曾经,我是多么喜欢你我看成黄子韬了隐约雷隐 阴霾天空 但盼风雨来 留你于此 @邓沁语炸了,连接不到服务器名为C的那个女孩,一起去看吧.。。。领到了太原16:00的票。。。顾霖玥我喜欢你你们真是厉害了皮蛋的朋友,我想和你一起看你的名字和别人对象一起去看明天都补票了悦,倩,超,岩,一直一直去电影院看完后 终于看懂了预告呐,小喻啊,一起看吧看完居然是国语版出现的人名都得黄半处陨落命铭,意所回之三年。佛换世心印己,可美无心所结。半处陨落命铭,意所回之三年。佛换世心印己,可美无心所结。半处陨落命铭,意所回之三年。佛换世心印己,可美无心所结。半处陨落命铭,意所回之三年。佛换世心印己,可美无心所结。半处陨落命铭,意所回之三年。佛换世心印己,可美无心所结。半处陨落命铭,意所回之三年。佛换世心印己,可美无心所结。看完 没有预期中得感动和震撼 早上醒來的時候,不知為什麼自己在哭見ていたはずの夢は いつも思い出せない看预告比正片有感觉系列原谅在重庆的我一个人去看我去补张电影票,上映那天,个人觉得新海诚秒五和这个最好看WSQ虽然你不一定在看如果在看的话我想对你说对不起 lyc呐,辰,一起看吧。黄镇,我们一起牵手去看吧苏御,一起去看你的名字亲爱的我啊!我想和你一起去看!马上一个人去电影院了我想和你一起去看!半处陨落命铭,意所回之三年。佛换世心印己,可美无心所结。半处陨落命铭,意所回之三年。佛换世心印己,可美无心所结。半处陨落命铭,意所回之三年。佛换世心印己,可美无心所结。見ていたはずの夢はいつも从天气之子来到这里观看。一开始看没啥感觉,到后面虐开,就哭了一晚上每天都在看 预告我有毒啊啊啊歆宝,想跟你一起看刚刚和喜欢的女孩约好了。下周六或周日,好高兴清露,我喜欢你小飞啊~想和你一起去看抢到的票送朋友了罗龙高 你是不是已经忘记我了你们没发现三叶的语文老师教的是万叶集吗而且声音和言叶的一样刚看完还想看一次!神木!!!!!半处陨落命铭,意所回之三年。佛换世心印己,可美无心所结。大陆的预告片真的很棒我看几遍都没想哭的感觉最喜欢的这段对话tada (tada) zutto nanika o sagashiteiru.不同的时间同一个地点遇到了对方表示我已经看完了已经看完了+1呐,辰,能一起看嘛?希望你还记得我啊。麻梦欢我们一起去看吧叶绿茵我们一起去看吧天庆,和我一起去看吧!李咏琪一起去看电影吧牛头 监狱看电影怎么样5W在线,骗人的吧巩翔,看完这部电影我就要跟你表白了。再见。票已拿到安祭 我承诺要保护你一辈子!安祭 我承诺要保护你一辈子!安祭 我承诺要保护你一辈子!雅茜沃宣你只想说票上星期就买好了艾米莉亚,我们去看你的名字吧!祝天下有情人都是兄弟姐妹神木dd的声音w李梓濛你是我的人一起去看吗?今天就要去了!!!!!半处陨落命铭,意所回之三年。佛换世心印己,可美无心所结。看透太多bgm:黄昏之时ただ ずっと何かを探している还是大陆版的预告片最好看mjx你为什么要拒绝我这部电影我也就看了几百遍而已无数次了2022考古!我说这一个预告片我看了一个中午信吗LYH虽然我不知道你是不是喜欢我,但我心里始终有你束珊珊走之前一起去看吧233幸阳 跟我一起去看吧!!多多小姐,你是我的女人~刚从影院出来,看哭了两只单身狗,去看变基友半处陨落命铭,意所回之三年。佛换世心印己,可美无心所结。三刷“你的名字”真的是每一帧都美到了窒息^_^!!!我来见你了,你在好远的地方啊。瞬间眼眶就红了看了很多地区预还是觉得大陆预告舒服0.5声线都变了2333333万 恶 之 源刷到了一个用这个预告片剪辑的《你的名字【坤坤与摇摆羊的爱情故事】》我已看过两遍了,超棒!其实,我特别想约你去看电影已预订好电影票了!小哥,我们一起去看电影吧!哈哈哈哈你们有毒我的天 一眼惊艳到了!! 小七,愿你的另一半能比我更爱着你万林洪我想和你一起去看啊(ノಥ益ಥ)12月2号万达影城见,接头暗号,你的名字电影院刚回来今天晚上和男神表白,成功的话就一起去看,祝福我吧,哈哈哈一直不敢看第二遍,怕把自己又看哭宫水三叶立花泷,夫妻携手战B萌。泷叶八进四生死局,请大家投票支援!声优的声音太无敌了万恶之源单身狗一个人也要去看here一起去看吧 就这周五小蠢货想要媳妇儿一起去看!!!很期待 呐呐呐2333劳资不知道和谁配对了还想看一遍啊12.3我欠诚哥的票看完了,跟十一个同学去的莫名戳中我的泪点你……我……想和你一起看《你的名字》希望下辈子可以做个京都的帅哥bgm:黄昏之时极速救不了这画质你的名字:奥巴马不知道为啥,我竟然比较喜欢预告张方涛我希望能跟你一起看呐,辰,能一起看嘛?希望你还记得我啊。梁,想跟你一起看小飞啊~想和你一起去看真爱蓝,菲儿跟我一起去看吧傻宝宝弟娃子一起去看吧妍儿 你爸爸叫你去看电影服务器炸了啊!!!拿到票了!!!莫名感动多多小姐,我要守护你一辈子~看完了 泪腺崩了av6542371 你的名字圣地巡礼~在电影院哇的一声哭了出来如果我们灵魂互换,彼此会过着怎样的生活,请告诉我,你的名字....希望能有5亿票房小飞啊~想和你一起去看打不开怎么搞琉璃,你看见了么,想和你,一起去票已领,请祖国放心我的白马王子,一起看吧-w-罗棠议,我啊,想跟你一起哦。你在日本两刷了的话那我也在中国两刷吧,还有一刷是给诚哥补票的看完撒花,好想再看一遍啊一个人在充满恋爱酸臭味的电影院里单刷了~~~~泷,你不记得我了吗?看了也没脱单,让我找一个漂亮的德国妹子做女朋友吧!你的名字是,,,吉良吉影“爱”就是科学与逻辑永远无法解释的程序。大陆这剪辑真是人才想什么直接买票就可以了神木弟弟的声音这么好听!配个鬼!lqb虽然我知道我们不可能在一起但是看着你就够了看了盗版的我必须去电影院买一张电影票,不然对不起新海诚!白雪已经答应跟我一起去看了隐约雷鸣,阴霾天空,但盼风雨来,能留你在此。。。。。。祁顶赛,一起去看吧看完了美版。 哭了。 2号约,欠诚叔一张电影票一起吃狗粮吧一期一振我喜欢你拿到票了拿到票了!!感谢B站姥爷!!村村,我想和你一起看白色相簿2的季节疗伤用两大老爷们领到票的路过双流的小伙伴一起吧小伙伴吗有没有一起的啊熊熊 我是你的呆兔子啊//成功约了暗恋的人啦♡老子要谈恋爱啊神木的声音真好听啊啊啊jyk 我等不到和你一起去看了看完了真的分手了猪 我想陪你看完这部电影5遍了 ,还没将心情平复 完了 完了 完了好喜欢这个瞬间!其他9位老伙伴你们好表白能当着面去说么三年后再来亿遍蔡徐坤,你不记得了吗我会告诉你们男女主交换了身体吗我们这里的影院好像没有排档……别问我为什么【手动再见】莫俊飞我们一起去看吧曹俊玲,我们一起去看吧晴岚 有人喊你去看电影领票成功卧槽有毒!!!!!!B站变成大佬了恬湉,我们一起去看!w江汉路晚上那场有多少基佬约?宋宋,我想和你一起去看如果我们灵魂互换,彼此会过着怎样的生活,请告诉我,你的名字欠的电影票已还滝君 覚えて ない?由检君,你不记得了吗?画质画质惊人惊人一个预告就看哭了!单身狗别怕 你不是一个人在承受伤害至左,猫饼还有我其他的朋友们,谢谢你们给的陪伴,谢谢嘿嘿,我名字缩写也是LF我不介意跟你一起去看甲鱼 记得去看电影- -陈鑫,你特别好,我喜欢你!!抢到了票,谢谢各位孔贤卓 你回头看看我啊 我在哭啊配对成功没票的我是一个人????唯独这片子不敢一个人看。。。和我家小可爱一起去看的(男的)宫水三叶立花泷,夫妻携手战B萌。泷叶八进四生死局,请大家投票支援!TIKTOK被美国制裁时期考古无论你在世界的什么地方,我都一定会去见你不动声色无以言表扮演温柔。都看完了为什么还有预告片?我看八遍!!!!准备五个基佬周末组团去看想和你一起,你会陪我吗?看完了正片看预告韩瑞迪我想和你看,我喜欢你好久了!!!孙光影我们一起去看吧太棒了,看预告片就要哭了单身狗去不了啊夹子...还能一起..看么看见说没票的我就想笑 我这那一天的票每场都没卖出去几个大家都在表白呐……那么,弟弟( ・᷄д・᷅ )你的名字,LQP你的名字:小海螺 我的名字:小书生电影院20刷达成!每次到着都鸡皮疙瘩一身覚えってない和男盆友去看!终于等到你T^T表示已经看完 23333每天必看,不要问我为什么补票的嗷估计宝宝12.2号可以去电影院赶上首映我把室友都叫上了忽然想自己一个人去看。长沙的朋友快挥起你的手阿硕,我们说好一起去看的啊呐,肖恩,想跟你一起看呢。阴佳乐,虽然你身居远方,但我会遵守我的诺言等你回来我已经决定至少要三刷了!刘梦月我们一起去看吧拿到拉,成都金牛万达的小伙伴领到了 开森单身狗自己看纪念我逝去的青春 ——凌沫等级不够哦怕啦啦啦啦好好看啊(bz的语气)昨天晚上刚才电影院回来刚补完票~表示刚看完,男神没来,旁边一直空着,好难受刚刚看完,刚出电影院港道理,看完君名,牢记住了男女主的名字我们能一起去看吧,西海岸约么单刷了一波狗粮。。。bgm燃起来看原版解毒周某,不记得电瓶了吗?已经预售了50元一张sad啊啊啊啊啊单身狗和谁去啊啊啊啊啊难道我要一个人尴尬的坐那儿吗武汉求个个基佬海口的有小伙伴一起约嘛!有一起约的嘛?单身男生求妹纸配看就好!糖糖,你在看吗?我想和你一起看媳妇儿 小蠢货想和你去看倪正,我想跟你一块看啊服务器挂了啊啊啊啊豪嗨心 哈哈哈哈哈抢到票了已经9点半的我一脸懵逼来看 桔梗没票了 买的一个人的午夜场穗穗我想和你去看!!!而且言叶女主最后也是去乡下教书了对对对对对男主的声音好好听!!!!!!泷是我的不服打架!当初去电影院看了这部影片已购买预售票的路过……特别美腻,超喜欢12.2景德镇看了4遍的我还是要到电影院再看一遍~清露,早上好清露,清露,铭铭,一起去看吧铭铭,一起去看吧贝塔贝塔 舒克喊你去看电影黄韵愉,我希望能跟你一起去看啊友情联动:av7350187明天要去看了好激动!!!!!比起秒五结局很圆满最后男主认出女主av7494389“治愈”版你的名字宫水三叶立花泷,夫妻携手战B萌。泷叶八进四生死局,请大家投票支援!国语 日语都有的,可任君挑选只能和基友看了= =失落,还想看吗?我媳妇儿我们一去看!!!!他么的我们这只有国语,内心是拒绝的双艺大人 和我一起看电影吧虽然是一个人看 但还是开心从从从从从从狗从从从从从从姚景瀚 你的名字 我的心事 看完电影再看预告的。。。。一个人去看的 身边被情侣包围全了啊喂喂~回来看预告,不知道去哪找预告,就来这了。让我失忆一天,我再去看一遍对!就是这个纪录片超感动!!!一个字,优(秀)瀧君12.2组队前去欠你的,都拿走吧!一定去电影院支持BGM一响就泪目清露,一起去看电影吧!清露,一起去看电影吧!要是能和你一起去看该多好秋秋,一起去看电影吧抢到了一个晚上十点半的票,看来要花钱看了wyr ich lieber dich!0.0 在不知名的网站上看过这个电影唐羽,我相信你一定能看见的!!!!!!!!!三叶太漂亮了 cd入手 坐等蓝光看完这部电影和早就该分手的男友彻底再见了今年最喜欢这部了一个人去看的……心酸徐程铭,还是忘不了你鸡皮疙瘩起来了!似乎是一刀未剪 大家可以放心了每张图都能当壁纸!!?已经预售,票价才24。。进大陆前我就看完了王森,我很庆幸我是你女朋友一个真正的好的作品,是会让看了盗版的人再去补正版的我的世界只有你的名字!单!身!狗!一!族!骄!傲!的!头!顶!青!天!正在等着···别人接受邀约的我····抢到票了!一起去看吧!!!芬达能跟你一起去看真的太好了。你的名字,印在我心口我去看电影只注意到了男主摸了4次胸来世我要做东京的帅哥万恶之源哈哈哈哈就算看过了,也要买票再看一次想到一个人去就好悲伤左手一起去看吧左手一起去看吧宁一个我你愿意和我一起去吗?没抢到到票!!绵阳的朋友,中午十二点小柒 我们一起去看吧QWQ相公~和我一起去看电影吧~日本真是个多灾多难的国度啊你的名字,车万廷画质好6,高清版的吗这就是我们梦寐以求的,唐朝和尚看完第二天分手当初看完后有点上头这里错了吧 为什么是泷注意男生的眼光 不是三叶吗??补票,补票票定好了 新乡首映有没有储怡微我喜欢你江德明,我们两个一起去看吧!其实陈诺我喜欢你啊,分手也不用难过座位随机尴尬啊。。。。我未来的男票,我们一起去看吧长春的朋友请私信我气死我了。。。我这小地方还没有影院单身狗的围观原来这么好玩的活动 错过zz分手我错了我们一起吧为什么会早就该分手呢哈哈,zwj俺たち夢の中で我的名字:奥巴马上映前的第七遍预告大陆上映的话应该是中配和喜欢的人一起去吧llovey好后悔之前看了 再看一次就没有第一次的感觉了12.2 凌晨 长沙 有看到的妹子可以一起去看李一芬我喜欢你!亲爱哒,一起去看吧。经历了双十一的人败给了B站一起看个毛!劳资一个人去看!抢票没抢到!!!单身狗自己掏钱看你。叫什么名字?今天看完了,真心神作怡宝咱们去看吧二刷绝对不自己一个人去=- =、。。。成都新都!上映后万达!嘛……小哥哥我们一起去看吧异地的看着你们秀恩爱情敌一起去看电影吧香香我想和你一起去看我要和我的宝贝儿一起看恋爱随意链接票拿到了!没有人与我配对很苦恼 我和我闺密去看我竟然没哭??SONY大法好!入れ替わってる最喜欢大陆的预告片你的好友:RADWIMPS已上线音乐起一秒哭2020年7月13,还有6天中考qqqz日电-日立-东芝-夏普-索尼-松下 倾情赞助票房终于有机会还了醒醒吧,你没有女朋友西西 我喜欢你 超级喜欢!右手我想和你一起去看...天,可惜那天我们开题,看不了拿到票了!幸子 我要去见你了!!!小恒一起去看吗?肖然我想和你一起去看在网上看了一遍后又去看今天的首映我碰巧买到日语版的了 太幸运了其实也不是这么好看,我也只是去电影院看了4遍从隔壁英语版过来这个是我最喜欢的电影,没有之一去日本= =电影院看完的我那些说事中配的 最好自己打开支付宝看看亲测重庆大部分影院全是日语票已买(补票的说)12.2 珠海 如果你能来就好了开心,我配对成功了!!!我可以说我和我妈一起去吗...你的名字是王蛋啊 那 我们在一起吧神他喵国语版怡宝的别走,她是我朋友一个人去看的 周圈儿都被情侣包围了啊喂喂~每天定时看三遍,第3天如果有来世我希望我成为一个真正的活的有意义的人浓缩的都是精华哈哈哈哈哈哈哈0.5倍速乳摇瞩目乔,一起去看吧~李佳敏现在的我想和你一起去看朱鑫萍和我一起!!!!!!一个人去看,眼泪掉下来抢到资格已经没票了怎么搞没抢到票的有没有,心疼地抱紧自己多想和你一起看我可以说是我一个人在晚自习后去看吗?虽然很忙,但是还是要早起去二刷!只对电影院里的中文配音感到尴尬很好看 一定要去电影院看!在影院哭了半个小时的我儿砸,我...tyotto takikun, danshi no shisen, sukato tyui听到无数次你的名字 第一次看预告小蠢货想和媳妇儿去看啦二傻,大傻要带你去和cp一起去啊鲁壮哉我大FFF团!!!纪雪莹我想和你一起看你的名字 我会一直记住 李维平~~我可以说我是一个人在晚自习后去看吗?票以买明天和闺蜜一起去看谭云格 我想让你陪我一起去看这场电影!芷澄,一起去看吧全民表白墙在电影院里看了两遍 手机上看过一遍 还想再看一遍结果你并没有跟我一起去看 你抛弃了我一个人刷了七遍就我了吧,我还是个男生预测票房大爆12.2必须逃课去看啊!!!诸君12.2不见不散哦~~!!!!虽然看过了,但还是要去电影院看一遍清露 中午好成都新都的那个等等我至少要三刷!!至少要三刷!!孙光影我们一起去看吧真希望你在我身边啊 张起灵 和我一起去看吧已领票!感谢b站爸爸!领到了票 哈哈哈哈哈电影院看第二遍的时候,看见他们开始笑的好开心和男票一起看的,开心,捂脸(*/ω\*)昨天看的时候!哭了半场!!T.T表白的人全部原地爆炸看完了 还不错景德镇有没有一起看的?有南宁的吗?cc我会等到你吗 很对不起你呢张方涛我就想跟你看好棒的画质老公 一起去看吧我的世界只有你的名字你的名字:林谋良讲道理我真叫vv领票成功两万表白大军你们好韦漪涵,我想和你一起去看!声优好喜欢爸爸爸爸爸爸我在这想和喜欢的人去看,但是他却拒绝了我看的那天正好是和对象分手了醒来比摸的球乱性别跑男子の視線 スカッと注意再看亿遍电影院是中文配音就不去了看过日语版想看国语的还没有茜茜,一起去看吧张明浩我们一起去看吧!只有我是和舍友一块看的哔哩哔哩 - ( ゜- ゜)つロ 乾杯~ 一起去看吧!电影院男主女主都好困难就算去不了我也要为你们抢票!!!!!!。。。太原16:00的有吗。。。赵立和我一起去看吧和俩单身狗加一个有对象的妹子一起去看的QAQ截止到20号,断断续续去刷了六遍,也是没谁了我想下辈子是一个漂亮的小姐姐てめぇ 三葉这个电影也没这么好看,我也就看了十七遍而已已经预订好票了南充的等我海口的有没有妹子要一起去看了好多遍还是期待电影院上映坐标成都王府井王多君,我喜欢你票已拿到手,不知道找谁看我就不一样了,我一个人去抢到票啦~然后没去过万达结果选了个超远的领票成功!但是我要去刷首映!!!!!!!!!!!刚刚收好人卡的大叔张文辉我想和你一起去看!!!这电影一定要刷2遍以上三刷 无悔!小玲 不记得了吗?我的眼睛 是否还在怀疑你的名字好看到爆崔香宁希望你跟他在一起会更幸福激动,一起去看啊!!!服务器炸了, 我登录帐号好久今天我将死去,你将重生!不知道和谁一起看助手焜焜我稀饭你!!!!钱老板,本来想和你去的,好惨!!!表白b站。。可惜我是单身狗要这票何用昨天买了票 23元看完了电影,忍不住一遍遍刷幸好我是和女生一起去看的看了两遍呢俺の人間関係変えるなよ不要用我的身体去打工啊跟着唱起来~~~~感觉比原版预告好233B站组团占领电影院啊李一芬和我在一起吧自己看吧已经买好了票,一起去看吧好难过 服务器挂了你们一起去看吧..第一个领到票的w开熏w姜懿轩,虽然不在一个地方,我们还是一起去看这部电影吧刘智明谢谢邀请我一起去看哦今天和闺密们还有男票一起去看 泪目,你的名字,我的心事燕,我看完了吹暴谷花音如果男神和我一起看就好 今年就圆满了预告的预告恋爱随意链接?重庆人准备就绪想和喜欢的人一起去看死宅肯定第一件事就做个,不要骂我,我也是白雪已经答应和我一起去看了。开心。你到底有多喜欢你有欧派吖(滑稽)才清醒过来,十点了萧王带你去看电影啊预告已看N遍...这里我笑了很多次手机上在哪可以看这不是你们的表白墙谢谢ほんとに自分のおっぱい好きあな说明什么?这个地方不会删减!看来是不会删减了讲真,这是目前君名最“污”的一版预告片了吧(笑)一遍中配一遍日配腻腻看到我了吗!高洁,我们一起看吧不算b站送的票 已经买了两场了 李艳 你在看吗?再也见不到那个你了,一起来看电影咯我要和一起起暗恋是普世的好想看啊!看完了,坐等BD希望我下辈子能做一个漂亮的小姐姐hontoni jibun no oppai suki yana安全了!预告片里都有这样的话可以享受2种快感(手动变黄)反倒是我朝的预告片更黄……画质感人加一,准备去电影院二刷郑子慧答应和我一起去看啦电影院的朋友们,看完请不要哭(我看的第三方标清的 看完以泪目)成都王府井的 你别走领到了超开心!!!坐等应邀唐羽,我相信你一定能看见的丁敏我想和你一起看!在哪儿抢票男主日常摸女主胸(1/1)永不忘记自己喜欢的人这样好痛苦,我记得你,你不记得我好好好摸胸还在!我洋的声音啊啊啊!!!!新海诚终于不只在意换开始留意剧情了看多少遍都不能满足 只能这样刷到12月2号了实在喜欢得不行,准备到电影院支持我还担心摸胸那段给删了呢…超级期待!!!!天津万达约吗欧派那里笑了。。涵涵我想跟你一起去看忍不住看了480P的,不过还是要去看虽然没抢到票 但是 我祝愿b站越来越好蛋蛋,我也很想跟你一起去看关文俊 好久不见了大盐 我想和你去看!看完就混到女朋友了看完电影再看预告的那个等等我,我也是哈哈无论你在世界的什么地方,我都一定会去见你就是普通的青春电影又不是讲什么深奥的东西分什么神作不神作从你的前前前世开始,我就一直在寻找你的踪迹庆祝大喵&橘子抢到了同一时间的同一场票(~ ̄▽ ̄)~~~~~~。。。无论是谁太原16:00的一起来看。。。左手左手,,我们我们一起一起去去吗吗单身狗好难过厉害了 没有妹子一起去 没抢到好伤心!ypla·一起但总有一天,我能做到的没女朋友只能这两天一厘去看了日刷一遍。哈哈电影院去了四遍一个星期连着看了4遍,看一遍哭一遍(17.11.8)小玲 小玲 小玲 你的名字 不曾忘记就这样出现在大鱼海棠的年份,挺讽刺可怕,明明不是单的还是被虐了喻琳然,遇到你是我者一辈子的运气高洁,我们一起看吧.。好像订早了。。。朋友貌似去不了了卧槽。。蒙城的求配对1334楼回复我蒙城的求配对1334楼回复我蒙城的求配对1334楼回复我已经领到票了 大蜜子走我就不一样了!我一个人去看!!表示今天中午又看了一遍,额~对,是又看了一遍妹妹吐槽欧派的时候电影院里大家都笑了程玉燕,我想和你一起去看哈哈哈 今天刚和同学去刷完喵,还记得一起看完的么谁和我去看我请客新海诚,我欠你一张电影票所以说……大陆的到底是日语还是国语?清露,傍晚好清露,一起GOmd变身男女笑尿,完全不同好吗、祝福所有表白者,终成眷属!没人约怎么办,在线等,急大骗子.会带着你去看的额...才看完,爽的一塌糊涂陈秋雨你的名字我可能忘不掉了你的名字。我的心事。0.5#瞬间解毒过了半年再刷 还是激动到捂嘴超喜欢预告的剪辑这预告简直了 看一遍哭一遍泪点太低的我- - 梁凡我想和你一起看今天禁水的最后一天,赶紧刷起来单身狗找不到对象,基友想想还是算了(这种电影)我为什么一直卡界面 抢不到啊陆玉小文文和我一起去看电影!等级不够伤心!交换身体感觉很棒我不能去了,希望大家能够观影愉快苑美洁我想和你一起看~摸胸狂魔看你们这么开心就想哭あの男(女)はano otoko (onna) wa黄昏之时逢魔之时摸乳沒刪我就入場w这个地方应该是蓝色皮肤的app吧,泷用的和三叶用的皮肤不同诶。。。看过480P的表示这种画质实在感动我想去电影院在看一边曾欢啊 很遗憾不能跟你一起看了B站包场了! 财大气粗!!我爱B站一辈子!!!!!我喜欢你你,一起去看吧!志豪一起去看吧加班回来晚了儿子,我们一起去看吧!我想和大眼萌一起看吴周艺我想和你一起去看!浓缩的都是精华有幸和喜欢的人一起看了一听到就要飙泪了第一次一直忍着不看云盘,一定去电影院看,留住这份感动前前前世可惜还是单的 连目标都没找到 错过了一场时机没有喜欢的人所以我自己看深圳来配对!!!!!哪里可以抢票啊不能错过你啊!!!没抢到壮哉我大b站h嗨呀疯人院的朋友们加油啦消えてるkieteku天气之子啊啊啊啊啊我洋次郎我radwimps准备三刷已经。。。失去了和思念的人去看的资格。。。也许从来没有过特特一起去看吧雨思一起去看吧!!!!么么哒!!!那个谁 我很想跟你一起去看玛德 领不了啊武汉武汉!!!!南宁青秀万达走起霸霸加油啊逗比们还要一起嗨啊陆诗摇今天刚看完好看炸好气啊,一个人去看的你的名字叫钱艳,这是你的名字,快要忘记你的样子了!三刷归来同忍着没看,就等上映呢虽然看过一遍了 准备再往电影院看一遍小蠢货祥和媳妇儿一起去看!!11李一芬我喜欢你啊你知不知道去电影院吃狗粮,何生生,你喜欢你!董新悦跟我一去看吧董新悦跟我一起去看吧石家庄有没有换票的!!!!!!!有旁友约吗 在成都万达锦华区4:50那场坐等星期五啊我有这动漫的资源 就是画质没B站这个好有一起去的吗没声音的我是一个人吗masaka hakkiri oboeterub站这么大,翠翠我能找到你么?高洁,我们一起看吧黄林 哪怕上课 我也要逃课带你去看墨墨,其实好想跟你一起看啊比起去影城看我还是想在家里付费观看的那种呢和媳妇儿一起二刷去咯和你一起去,赛高小城市自己买了,也没多少钱看完之后内心毫无波动,甚至想笑真想问问表白那些人在这里表白算什么神木dd声音好棒啊up的头像把我的感动整没了.はっきり覚えてる新海诚制作,必属精品神木弟弟好喜欢我会一直一直一直想念你的!把我的思念传递给你。呀呀呀,李欣椅陪我喂松江的4点20的有吗?这让单身狗怎么好意思一个人去看差一点就能拿到票了蓝神我们一起去看吧刚看完啊。泪崩啊。。。太赞了结局yg我想跟你一起看唐僧肉吃不成了看完就有了女朋友我们这的竟然是国语的。。。。一个人去看的。感触大两刷,但每次看都依旧的感动这个宣传片的字幕比影院播放的正片好太多了我又相信爱情了!自己看吧欣雨 一起去石家庄三号有约的没601的卢眉燕我想跟你一起看要漂亮大姐姐的亲亲领到票了,我在上海;她在山东谭宇轩和我一起去看吧!!和自己儿子一起去看芮安娜以上所有提到的所有 都已GG刘世文,我想和你一起去看我的世界~你的名字~看了不知道有多少遍了哦马诶哇兴得一鲁无论你在世界的什么地方,我都一定会去见你差评!为什么找不到对方!!!╥﹏╥一定去电影院我已经约好男票了老婆 喜欢你 特别喜欢你为什么只抢到一张还有一张打不开已经跟机油们拿到了船票去电影院看的扣1,武汉的扣233宋宋。我还是不会忘你的。千千我想和你一起看啊啊啊啊啊啊啊!!!!我看出来了花式秀恩爱 我的内心犹如草泥马狂奔而过蓝神我们一起去看吧小妮妮明天我们一起去看小妮妮明天我们一起去看刚看完 我现在感觉孤独感缠身 好难受永远不会忘记的湛江-板蓝根动漫社组团成都确基佬一起,旧局流为了看这电影,我学都不上了李浩楠,希望你的恋爱幸福明明我想你了苏心怡,你要和我一起去看了没抢到票呀蓝鲸的小盆友举爪爪今天和朋友去看了,很好的动画蓝神我们一起去看吧圆圆方方13142019的我看了36遍莫 行得一路莫 行得一路孙雨嘉,我想和你一起看单身求伴父女七日变四川的+1池哥哥,斯妹妹想你。腻腻我们一起看金晓婷,我喜欢你。永远1ysl 我也想和你去看啊 可惜不能实现这个愿望了最後 還是在一起了加拿大啦~完美一个人去看的,好伤心这个背影由我承包↓誰だ求此处BGM江苏南通圆融有国语有日语啊,看了预售爱吃狗粮挺想和你看的,回不去啦,一年啦快。陈亮是个王八蛋!!!!!!!!!~这是能做B站上能看《你的名字。》的节奏啊施婕,我想和你一起去看。牛奶我们一起去看吧牛奶我们一起去看吧你的名字,是我永生难忘的记忆你的名字,宫水三叶!不想忘记你说实话陨石这里的音乐能加进一个防空警报就更好了恶魔人这个背影太漂亮了大林x5(空耳)广东湛江别跑,我缺个陪哈哈想约你,却没有胆量。看完我都哭了安徽六安人士一个在日本,一个在国内。不能一起看真的很遗憾。。。。。大宝宝,别不理我了电影院可以给单身狗免票吗?(ಡωಡ)好气啊一个人去看的虽然现在我没有女票,但是我相信我会在未来遇见你,你的名字是?不想出门,在网上看了盗版的无论你在世界的哪里,我都会再一次的去见你,周佳音无论你在世界的哪里,我都会再一次的去见你,周佳音必须刷50遍以上想问一下手机里的信息是怎么消失的誰に会いに来た差了3年 姐弟恋啊朱敏,我喜欢你啊黄其淋,一起去看吧。成都12.2(๑• . •๑)马克马克一起去看吧!!!!!!!!没有和喜欢的妹纸配对领到好气啊纳尼?那天正好我过生日- -好想看一百遍!马九港,我想和你一起去梅梅 我想和你一起去看鱼的七秒记忆看完分手了。。。 每次到这里总会起鸡皮疙瘩韩越珊走吧,相约电影院六年过去了,拒绝中配的简直了,什么心态...韶关的呢,北实的悦桂宝我们一起看吧我在中山而且找到了人配对,无奈这边不再活动范围,心塞胡日娜我喜欢你武汉!一天刷两次!中午买票了,晚上抢票单身狗看到的太晚了结尾出现了一堆中国人的人名。看完回来说 真的很不错每天总是控几不住自己来看几遍这里的bgm是 火花(Spark)此处BGM为:スパークル (movie ver.) 抱歉占了底端 请谅解别说了,三叶是我的你的名字,我永世长存的回忆.運命だとか未来とかって重庆人民日语厅围观bgm:スパークル (火花)可有B站组团占领万达电影院的江门的等等我!!!朋友!!成都 12.2号 准备就绪~你的名字能撑到一月5号吗!!那时候电影院会不会下架家住成都华润二十四城 有没有人约 二狗子 我们一起去看吧到时报上你的id!運命だとか未来とか神木小天使的声音啊啊啊啊苏爆了语文课PPT新海诚不相信爱情天气之子过来的疯狂奶这段bgm叫什么名字啊??求也没用,中配已经配好了,中日二语自己选呗。清露,我想和你一起看电影清露,你个宅女,黑海清露,我是谁?张梦甜我们一去看吧qwq都配对成功,到选场次了,一直刷不出来!西安两点半一起走晚了30分钟,只抢到青海的,需要的私戳,直接给,能换南京的最好了。哈尔滨冰城有一起去的么为啥这流星落入地球像洲际核导弹弹头突入大气层似得。。。就是这地方,配着bgm特震撼不管“命运”“未来”这种话语有多少真的是神剪辑!单身同求伴嘛,一个人吃狗粮去咯(免疫情侣造成的魔法伤害)江门那个别跑 我陪你 你的名字 是 我一定是那里见过你 对吗去一个命运和未来触及不到的地方和你相恋这场电影和我喜欢的人名字一样来还新海诚一张电影票! 我想和你一起看以上为遇难者名单cf想和你一起去看竟然看到结局哭了全片最感动的地方之一!!立花泷 宫水三叶一人早恋全村得救稳定-6奶不死的啊 这怎么奶得死嘛小双我喜欢你小双我喜欢你这段的背景音乐是RADWIMPS的单曲《スパークル (movie ver.)》bgm:火花家在山东然而人在唱哈都是这流星惹的祸高洁,我们一起看吧明天电影院见关哲我等你请问这里的bgm是什么啊男主たき女主みつはみやみつって言葉が どれだけ手を卡 兹 !但是有一件事我能确定,如果我们能再见一面,就一定能认出彼此真真壁纸壁纸狂魔狂魔言葉がどれだけ手をbgm:スパークル 可不可以上映一个月 下个月你就回来了 这里,凌墨,等着接你回家安静的和妹妹去看QAQ好惨失恋的每天要去看了。因为弹道导弹弹头再入阶段也是这样心蓝~我想和你一起去看全场最佳迪亚马特彗星各位大兄弟,这里的bgm是什么啊所以这里的bgm到底是啥啊,完全没找到啊不要说是スパークル我听了半天完全不是这部电影的BGM次次听都能想起来电影里的场景然后开始泪目每次到陨石这里就一身鸡皮疙瘩岳承玉,忘记我吧bgm:前前前世这段真像。。。。寄生兽剧场版的ep啊我知道是同一个人唱的君の名は!成都金牛别走!?小蠢货想和媳妇儿去看~~~想和你一起看田田我想和你一起去看吖(っ╥╯﹏╰╥c) 《《美子,你在哪?》》 原来是这个啊,好像在哪看过c君的站住,她是我的梦这东西,醒来之后很快就会忘记.来伸出手吧这里的BGM确实是スパ一クル的,不过要等7分多钟才到那儿目覚めればいつか消える想起中国电影频道的评价蜜汁想笑BGM花火 在你的名字专辑里面呐,辰,一起看吧。林庆毫和我去看吧以上均匀分手耿铭宏我喜欢你我们在一起吧狗粮已经领好了!!!!心酸,哔哩哔哩这样的助攻还是脱团失败好想和你一起看qwq他说他今天就去看了,一个人。。。而且,我真的不知道他的名字。。。程天乐,我想要忘记你的名字!!!火焰之地传送门你的名字,两个人的幸运,一个人的感动*↓スパークル最后一分钟8:00见你 哪怕是借助神的力量无奈没有女生陪去看裴延益!一起看抢到票啦 敏敏一起去看!张起灵 和我一起去看吧】好气啊 好不容易邀约成功了 结果场次没了5555555大连的有没有上午10点场的,这里有个4点的求换票啊啊啊啊啊和我的男票看(不正当的男♂男关系)申棋我想和你一起看麻蛋,电影院里周围一对一对的,我只能吃狗粮QAQ纲吉和你一起看!スパークル……最后一段,在电影院看这段剧情的时候鸡皮疙瘩满身看完国语预告过来压压惊这里奶奶的话就像先知一样每次看到砸镇子的时候就想哭スカット 裙子伸ばそうと届かない看到预告都泪目了刷票房走起!!没人陪好想哭,如果有男神陪我去看,今年就圆满了其实是AZ里打掉的月球碎片吧喂老五,请陪我走到最后,阿九最喜欢你了单身狗的愤怒↑23333糖糖我想你我想你我想你跟基友抢到票了,一起去看吧。骆慧 我想跟你一起看徐风晟,我等你YS我想和你一起去看啊刚刷完来补预告片伸ばそうと 届かないtigau, yume jya nakatta.有中配跟原版 可以选择的哇,一定要看单身狗也想去看,但怕被虐的连狗都不是了四川巴中的约吗我想一起去看啊啊啊啊啊啊啊我也想跟我的大宝宝一起看。。经历这么久了,我感觉我已经快不认识你了老套的故事求上海江桥晚上九点四十的票我是真的气,一个小时没人配对233333重要的人,不能忘记的人,不想忘记的人。你,是谁?re即视感牛奶我们一起去看吧夢じゃなかった我们已经分手了第一部忍着等上映的海口的在哪知道吗?我是谁前面广东的别走,我开平的黄子庭 一起哦甘佳雪,跟我一起去看你的名字吧成都金牛别走然而没领到票尚泽薇我想和你一起去看学长!我们一起去看吧!我们在它们传达不到的地方恋爱BGM是「火花」虽然我们现在分开了,但是不管我们之间的距离有多远,我还是会去,见你黄辉燕看了十多遍跨越时空的恋爱他问我跟谁去我说可能自己吧长沙有没有人一起啊!不想吃狗粮耿铭宏我想和你一起看李霄我爱你 等着我后天出现在你面前 嘿嘿 676km我要陪我闺蜜看~唯独这片子不敢一个人去电影院看...哭....二黄,你永远是我的狗子我这的横店今晚的场次满了...昨天去电影院看了,但是好想再去电影院看一遍啊啊啊明天,我们一起去看@海洋明天,我们一起去看@海洋明天,我们一起去看@海洋nyq我想和你一起看啊预告好良心場所で僕ら恋をする場所で僕ら恋をする秘密花园的剧场版感脚哈哈哈哈哈!同学有资源!hhh!我!不!怕!飞回国的带我!看到杨艺,我按了暂停钱钱,你是不是又在约人广东湛江!!!王象我们一起看电影吧谢谢大B站啊啊啊赖悦琦和我一起去看!!影院看就是爽和小明一起看了看过电影还是很激动天气之子2020看还是很感动说秘密花园的你别走,那是看的第一部韩剧珠海的在这里 华发商都见右手,看来只能我们两个去了。。前面湘潭的别走 这里湘大15级汉语言黄圣钊 我喜欢你 一起去看吧表白的全都举报!吴娜,能和我一起看吗音乐好好听忘不了你的名字 刘深婷臭猪 你看到认得出我么?三叶!!!配音好赞刘雨阳,我想和你一起看这个BGM是花火告诉我你的名字好吗欠你那么多年的票房终于可以还了前面占领万达的憋走 带我一个南宁南宁南宁南宁南宁的等我,朝阳万达约起来江西九江的有吗 一起去看吧北京朝阳区的有一起吗她的名字叫邓沁语00我喜欢你,但是你能不能不要和别人去看了有资源也不看的好宝宝G君,一起去看吧。香菜也参与配音了看到男女主相遇的时候简直了qwq表白镜音连看完之后更加不可能有女朋友了米4达!你已经不是我的了時計の針も二人をbgm:夢灯籠江门组团阿重庆从我们分出去的清露,走一起吧想和男朋友去看,但是,他可能不会喜欢北京万达求配对!要和502配对去了@蚀血之暗 老暗我喜欢你 我们一起去看吧陈佳新我还是想等你雷克萨:米莎!!qc,我想和你一起去看啊!想不起就别想了米四达!旧海诚 制作233,全都是89满篇89简直了。。。成都的哦~欢迎妹纸一起!南宁的等我,我在西乡塘区很是羡慕可以刷弹幕的小伙伴,你们至少还有心里惦记的名字。TAT王嘉仪和我一起去看吧王嘉仪和我一起去看吧王嘉仪和我一起去看吧张梦露,我们一起看吧已经订票,必须去看的电影,今年唯一期待的电影原本不会相遇的两个人就这样相遇了如果她不赔我去看,那我看完电影后就忘了她。买了单号票也没能分开那些情侣在两人深情对视时君士坦丁!!!就是零差评!一个人去看 有一起的么 已买两张票 坐标 霸都B站网友就是火辣辣的票房保证啊要和我一起走下去啊!南宁在这儿!高洁,一起哦蒙城的求配对1334楼回复我胡日娜我细化你芹儿,以后有机会一定要陪你看一场这样的电影合肥的想换天津有吗!!刷名字都是心理没成熟的吧 喜欢埋在心好不bxl,我想忘记你的名字!两个人的幸运,两个人的感动↓你看,神作是光线传媒自己说的可惜今年有疯狂动物城啊89这个数字神了欠他一张电影票在泰国看的是泰语配音醉了统统89真非主流的感觉罗嘉仪 和我去看吧冷鑫蕊我们一起去看吧身在青岛的佛山人想和冷同学一块去看我要和晓明同学一起去看^_^胡日娜我好像发太多了师父师父看完我们去吃夜宵看到朋友的名字了,诶妈已经有很多差评了……每天看一遍超喜欢这段异地恋的梦不怎么好看,也就看了40遍!?一定要跟自己喜欢的人去看哦再次证实女大3抱金砖?!文静!!!茂名别跑!!!!!!东莞的有没有,下星期刚好双休腻腻我们一起看腻腻我们一起看腻腻我们一起看想找个在广州的人和我一起去看。。已经买票了,明天就去看和宿舍一群男的约好明天下午去看qaq哈哈哈哈和小明和李华看的2333333我想跟红果果去看,可是她跟外面的狗看了!!!横目に見ながら進む表白神木小天使!!!当年一起看你的名字的同学,现在,你们还好吗19看完天气之子来考古了果断带基友山东日照8.9分,下降了0.1分我 想你了 我到底是那里见过你江门的别跑看过了,不想看第二遍系列9888楼求配对!【留下了心酸的眼泪】胡日娜你会不会回来揍我玲玲 想和你一起看这部电影什么时候中国也能出这样的电影ly一起看吧omae no sekai doko ni itemo kanarazu ainiku te不能忘记的人莫名想哭不来中国你还想要票房?就算是一个人也一定要去看耍清露的也是够了六子我落心还喜欢你啊中山当然有人!!!韶关的有没有啊!!!!顾其伟我们一起去看吧佛山南海的有小伙伴吗,有b站赐我一个女朋友,滑稽脸你自己的名字都不敢说出来你发别人的真名?必ず一度も会いに行くって有几人看的国语版的?哈哈我看得原文版!!!!!!大陆版的宣传片最有感觉讲真 大陆剪辑是我觉得最好的版本..米斯达你是魔鬼吗三年了,我回来了!无论你在这个世界上的什么地方 我都一定会再去见你高达8.9分,敢达多少分意大利还要等到一月份才有上映,还要等啊新海诚导演在首映发布会上说他特别喜欢中国剪得这版预告,说感觉很有力BGM好评!!!清露,清露,你的名字是作为一个只有自己的lv3谁可以跟我一起匹配一下吗?一起看!!!好开心虽然不是和男神配对,但依然可以一起去…还是敲开心汤如菇我想和你一起去看一个人去电影院刷了3遍我要和口嚼酒无论你在世界的哪里,我都会再一次的去见你,周佳音你的名字无论你在世界上的什么地方,我都一定会去见你新海诚出品必出精品徐雪琴我喜欢你,一起去看吧!我要去看两遍,一遍原版一遍中配小声地说茂玲姐姐陪我去看吧:(首映票抢光了。。。只要你不放手,我就不会放手这种高清的画质,把我感动的哭了菜CY,我想和你一起去看现在12.2晚十一点,鄙人刚刚从电影院回来,好看的快哭了刚刚看完再看预告片真多爽火花的后半段,中间bgm特长そんな世界を2人で两人在那样的世界里你的名字:陈常鑫おまえのせかいどこにいてもかならずあいにくて日本动画的伟大复兴。神作不解释光是看这个我就快哭了!!霸都的等等!!即使被喂狗粮我还要去看我们一起去看吧广州白云区的在哪里我我,我在广州,不要一个人去看哈哈あの人は誰不管看多少遍都不腻啊!!这里BGM是那一首啊不是在他穿打工衣服努力赚钱的时候混蛋!你怎么还不出现!无论你在这个世界上的任何地方,我都会去见你天气之子的时代到了今天日本地震了,而我依然不知道你的名字趁没人注意到的时候偷偷承包DD!(*/ω\*)中配你不看就行了咯,为什么还不准别人弄神木dd的声音太好听了内心是好想好想好想跟他去看等电影院北京海淀的有约的嘛、ygx我喜欢你两万表白大军你们好雷克萨的我笑了哈哈哈江梓灵,我想和你去!被这一段声音给炸哭,神木的哭腔值得花钱去看的电影君の名は欠诚哥的票一个人也要看柳州包场这里文豪三个妹子约好去看罗嘉仪 我喜欢你 和我去看吧罗嘉仪 我喜欢你 和我去看吧打算和三个朋友一起看 赵文琪妹子你是我不想忘记的人!卧槽,厉害了忘れだくない人看完了,哭成了狗希望她和我能从这里开始。(。・ω・。)ノ♡好想把神木这段声音截下来循环!!你的名字,我的故事,哦,不,是事故这段剪的好泷的声音太好听了我为什么连预告都能看哭啊听说这个比的上《未闻花名》我就来看看楊安琪我喜欢你啊!一起去看吧!你说好陪我去的,今天我们分手了仙桃的那位,我在西安,不能约南宁万达请举手配对谢谢我想看和你一起看,而你却在远方今天一个人看了,还好心脏大忘れじゃダメな人雷克萨的那个别走,笑死我了n遍刷神木的哭腔,我的天,好想剪下来,听不腻啊好棒看的午夜场 整个电影院就像是被我们四人包场了一生いや何生でも表白我神木的声音啊啊啊啊啊啊表示看预告片也能看哭大陆版的预告片赞诚巨这画面我是真的服了已订票 选了正中间最好的位置 和闺蜜一起 13号见李雨航我喜欢你,一起看吧陈鑫,我喜欢你,超喜欢你!!特地买了票 12.2虽然配对成功了,但我还是个单身狗,看这个会不会被发狗粮啊为什么看着宣传片也会泪目。。。我的王之右手,我还是永远爱着你。我的王之右手,我还是永远爱着你。某某,我们一起看吧靓女啊在 这 停 顿不夸张的说看了20来遍登今年的天气之子我来承包神木dd,前面的休想我记得豆瓣分最高的动漫电影好像是银魂的剧场版←泰语那个2333天津的偶遇否你系边鸠个想和你一起呢但是不行了呢再见!蒙城的求配对1334楼回复我她叫石柳媚~南京河西店 第一场westfive.github.io流行之云,你的名字,谢谢,对不起。莫名觉得女主像老巧妮但是,绝对不能忘记呦你的名字,吴可欣你的名字!赛高!新海诚不相信爱情拿麦哇!好激动 我要带女朋友去看这声你的名字是好萌!暂停看乐队名字,bgm都是他们唱的↓二狗子三狗剩你的名字是:新海诚!!!清露,一起去看吧张越,张越,张越,张越!!!只有我是和基友一起去的吗?我相信在大陆上映,肯定会有更厉害的票房叫菜淑芬君の名は看预告片结尾有点像纯洁心灵的永恒阳光啊无限循环哭腔你的名字是!!!赵铁柱与田二妞二狗蛋子姚嘉敏,我的初恋,我还爱着你啊我把电影票送给好朋友了哦,真的是好朋友很高兴你邀请了我狗哥又在搞事情了滚滚滚走错片场了,瞬间笑了走低的原因还不是因为某些“先进”的家长以为这是吸氧羊就带着孩子去看,结果呢?名侦探柯南 是个侦探纯属新海诚行为我的名字叫吉良吉影,33岁。我 叫 阿 杰我叫黑虎阿福,你准备受死吧江户川柯南,是个侦探原来是交换身体啊我可是经历过双十一的男人,竟然连个票都抢不到!恐怖 我居然看过这电影 忘记是在哪个网站看过你的名字,陆唯g男女主哭着说你的名字的时候 感动。别说是女朋友了,连室友都约不到 只能一个人去看了江户川柯南,是个侦探老子有杯存了三年的抠脚酒,那些抢着要喝的我这里有生き抜いていこう老娘名字tara(滑稽)这话听的我心里一颤说我渣渣的那个绿的回来,受徒儿一拜拿破仑成吉思汗已经5年了 我终究是变了 南充有一起看的不???啊啊啊好想看你sei啊?徐州徐州徐州你们当面说啊冯宝欣,一起去看吧!!!!!!!欢迎来到爱的火葬场罗,棠,议。12.2自己一个人去看op帅气的一塌糊涂,ed还是挺感动的你的名字是?你的名字是?你的名字是?神木dd的哭腔我们好像在哪里见过,请问你的名字是?ctos大停电你的名字→金木研狗哥表示我只想大停电(滑稽艾登:这个真的不是我弄的!鸡皮疙瘩看宣传片都会泪目的电影蔡徐坤你的名次是?二狗蛋子星期五要上课看到满屏表白 身为基佬慌了2333333一个人去看,单身狗的悲哀我的世界~你的名字~我也是昨天一个人看的,异地恋呐~虽然不是单相思…感觉这PV已经暴露了全部剧情艾登:这不是我的锅超喜欢这段!!!看完电影,我已成泪人在下名为欧布,欧布偷你鸡江户川柯南,是个侦探吉 良 吉 影看门狗的大停电喊三叶的那声 喊的心碎李狗蛋前面南充的不要跑......颤音好评,不要中文配音放字幕更好。请务必和我一起去看向媛媛,和我一起去看吧徐恺,je t'aime!明天和喜欢的人一起去看神木DD配的好啊!李紫薇,我放弃了啊最亮的是彗星,最大的是扫帚星。今天一个人去电影院看完了CTOS 大停电 走你预告片看哭了预告的流星和正片的流星。。。。。。radwimps赛高的确比在悉尼放的预告片要好看点天朝内地是中文配音吗。。我的妈,好棒,一定要去看我也欠一张电影票,不还了,哈哈龙凤呈祥。RXQ我不会忘了你,永远你的名字 冰海,小薇在这等你激动地鸡皮疙瘩都起来了你的名字真·神作表白的原地爆炸啊!(╯‵□′)╯︵┴─┴我的入宅作!欧布???别让我找圆古投诉你。你的名字 蓝邓燕我叫阿杰,附近的人都叫我杰哥(doge)好棒啊本来泪目了看到二狗蛋子尼古拉斯赵四笑出声清露,一起谈恋爱吧你还会记得我吗,我不在的日子里,你一定要好好的很有意思的样子票已买好四川成都,我和基友一起去张家哲陪我一起去看吧!张继科你的名字是ZQ黄磊黄磊@!要不是今天没票了,我一定再去看多几次我和一起做视频的小伙伴去的(同性跟我们班的人去看男生吵得要死中文配音无药可救想了想,没有女朋友,还是不去电影院了圣诞回国和基友一起看我真的好喜欢,后悔提前看了,一定要去电影院前面南充的等我!一起啊!春娇和志明小哭包 我们一起去看南宁万达有木有一起的妹纸郭鑫。我想和你在一起想和你一起去看啊577❤️それはまるで、夢の景色のように我想和你一起去看啊qwq看完后 我被追了四年的女生拒绝了看电影时那一幕很震撼你的名字我是布洛特亨德尔,你也可以叫我寻血猎犬看个预告我都要哭了妈的回不了国的,带我一个在这儿预言,你们一定会二刷!无锡坐标,求个男孩~你丫叫啥?看预告就哭了请以上同学当面说阿斐,我知道你有女朋友了,但我的心里,还是你的名字和基友看的带我一个朱晨颖我不能忘记你的名字肆雨大人,你的余生,我来守候胡日娜你会不会回来揍我抱歉我是女的而且是百合死兔子祝你幸福我会守护你一辈子的希望你和他过得好好的平彦,我一定会带你去看的你的名字,于峰炜防空警报响起及彗星撞击的瞬间直接泪目……为什么都喜欢看你的名字呢我用这句话写作文江户川柯南,是个侦探!泷的声音真好听我欠你一张票单身狗 就算一个人也要去看ZTS这三年,会一直喜欢你姚东晴,跟我一起去看吧黄子庭我喜欢你看预告就泪目的只有我一个吗此生最爱—李陈梦援看完了想恋爱嘤嘤嘤ただひたすらに、美しい眺めたっだ曾艳芬的你过来 我保证不打死你奶奶的 我要找女票去了单论cv来说,男主配的是真好在下版本 有何贵干天气之子江户川柯南,是个侦探湖南长沙有一起的吗永远感谢那些爱我地人。我正在考虑单刷还是一边看着别的情侣虐狗一边单刷帝国舰队已经锁定目标,旋风鱼雷发射!然而在电影里,女主看流星这段,炸了与千与千寻一样都是不破的奇迹啊!评价已经算是很不错了ctOS大停电美不胜收美不胜收美不胜收美不胜收美不胜收美不胜收就像是一场梦,醒来了还是很感动君の名は,君名为何,你的名字,翠花看了多少遍都不嫌多都是些少男少女在这里,老夫捂脸如果有时间的话一定要带着小右去补张电影票画质1超棒,好棒o(≧v≦)o那景象仿佛梦境一般一切是那么的美不胜收魏伊宁我会永远记得你的名字耿铭宏我一直喜欢你,从未放弃皮蛋的校花朋友,请与我一起看你的名字吧今天晚上和男神表白好激动电影院看完才来补预告,又瞬间感动到了我想跟他一起看,但是这是不可能的12.3 和闺蜜去看 满足ただひたすらに瓦达西瓦:精神小伙唉,只能和室友一起去看了长沙有人一起看么一肚子狗粮广州有没有帅气的男孩子一起看233画质比009好太多了,必须去看你叫莫斯长沙的别走淮北,约起!张方涛我说的所有都是真的那个人,好想和你去看呢截图截图田田我喜欢你好想和那个笑起来超暖的大男孩一起去看…你的一切在我心中是如此的美不胜收你们这些表白的人真是够啦!!!我想和你一起去看,可是你在远方有没有厦门的一起去我一个人去的,我都佩服我自己。。。。看了两遍qwq大家一定要看啊QAQ自己看感觉不错美しい眺めだった嗷嗷嗷最后一句太好听了我在电视看了完整 的电影美しい眺めたっだ新海诚行为抠脚酒的你是魔鬼吗美しいものが沢山ある美しいものが沢山あるwhat your name???长沙的那个不要走!对不起,妹子约的←无锡的在这,你要的男孩小朋友,一起去看吧!大美铝,一起去看吧!原谅我,当初选择了放手,如果能重来,我不愿再失去你江西九江的在这里 九江学院的!!!林肆衍,请一定要记得我壁纸狂魔新海诚我想和你一起看,却不知道你的名字约了妹子去看,大家祝福我万紫琦,嗯就是这样一个人去看,懵逼了随便截屏就是一张桌面无论你在哪里,我都会寻找到你看预告我都要哭了看个预告看哭了自己看吧,反正也不可能有人陪自己看吧这个我—定要去影院看我还以为结局是地球被彗星敲没了张文倩 不想放开你的手了 么么哒北京海淀的等我!我中关村的!真羡慕那些票买好的人啊美啊 画面真的太美了!我明天可以单身狗一人去了自个儿看吧!子个看的笑哭我最后一句太好听了我也觉得最后一句太美了君の名は。 自己看吧这部片子真的很唯美啊郭炫廷,一起去看爸自己看吧!(手动滑稽(ಥ_ಥ))我记得我们的那段感情,但最后我却丢掉了你的名字。错的不是你,也不是,而是那一场梦。本来我们不会相识,可我为了见到所爱的你,我愿意改变这个世界 你的名字-^_^-Jason Hui一个人去看的我,默默流泪TAT你的名字 姚逸如“爱”就是科学与逻辑永远无法解释的程序。啊,“一起看吧”,这句话简直太美了,不去看都不行啊神作,我哭了一下午突然让我想起四月是你的名字这部恶搞的自己看吧想和最喜欢的你一起去看你的名字陈波,我想和你一起去看多想和你一起去看右手,咱俩一起去看吧……希望看了可以改变我的桃花~~以上为本次表白失败人员实力虐狗,尽管如此单身狗也要去影院看!!!不 我是一个人你的名字 LWZ希望下辈子可以做个东京的帅哥希望下辈子可以做个东京的帅哥神木DD赛高!!!订电影票时就看到只有我的头像是没有泷的三叶。。。最后一句真美一个人也要去 可是我是俩个人去的自己看吧自己看吧,嗨呀,好气,忍不住发出了这句话妈的这也要发狗粮带上半个班的人去看好害怕他会看到这个po老子自己在被窝看的枪版那景象仿佛梦境一般一切都是那么的美不胜收中文配音怕什么,戴上耳机,打开资源,同步听就好了你们干嘛要约 叫男朋友去不好吗长沙的朋友!在哪里!挥起你的手✋✋✋✋✋✋你丫叫啥!?呐,辰,一起看吧。弹屏实力虐单身狗啊!!周六和闺密约起来一起去看~贡献了票房再来看,突然想哭 \ No newline at end of file diff --git a/docs/mobile.html b/docs/mobile.html index cfed87218..51db67bdd 100644 --- a/docs/mobile.html +++ b/docs/mobile.html @@ -141,7 +141,7 @@ ], plugins: [ artplayerPluginDanmuku({ - danmuku: '/assets/sample/danmuku.xml', + danmuku: '/assets/sample/danmuku-v2.xml', speed: 5, opacity: 1, fontSize: 14, diff --git a/docs/uncompiled/artplayer-plugin-danmuku/index.js b/docs/uncompiled/artplayer-plugin-danmuku/index.js index 161d3a4f0..ec2c80a14 100644 --- a/docs/uncompiled/artplayer-plugin-danmuku/index.js +++ b/docs/uncompiled/artplayer-plugin-danmuku/index.js @@ -332,7 +332,7 @@ class Danmuku { this.validator(this.option, Danmuku.scheme); this.option.speed = clamp(this.option.speed, 1, 10); this.option.opacity = clamp(this.option.opacity, 0, 1); - this.option.fontSize = clamp(this.option.fontSize, 12, 100); + this.option.fontSize = clamp(this.option.fontSize, 0, 100); this.art.emit('artplayerPluginDanmuku:config', this.option); return this; } @@ -436,7 +436,7 @@ class Danmuku { this.$danmuku.appendChild(danmu.$ref); danmu.$ref.style.visibility = 'visible'; danmu.$ref.style.opacity = this.option.opacity; - danmu.$ref.style.fontSize = `${this.option.fontSize}px`; + danmu.$ref.style.fontSize = `${this.option.fontSize || danmu.fontSize}px`; danmu.$ref.innerText = danmu.text; danmu.$ref.style.color = danmu.color || '#fff'; danmu.$ref.style.border = danmu.border ? `1px solid ${danmu.color || '#fff'}` : 'none'; @@ -624,14 +624,14 @@ function bilibiliDanmuParseFromUrl(url) { },{"@parcel/transformer-js/src/esmodule-helpers.js":"6SDkN"}],"eLxSm":[function(require,module,exports) { var parcelHelpers = require("@parcel/transformer-js/src/esmodule-helpers.js"); parcelHelpers.defineInteropFlag(exports); -function calculatedTop(danmus) { +function calculatedTop(danmus, danmu) { // 方法1:两两对比,只要找到间隔能塞进一条弹幕的高度的,则马上插入 for(let index = 1; index < danmus.length; index += 1){ const item = danmus[index]; const prev = danmus[index - 1]; const prevBottom = prev.top + prev.height; const diff = item.top - prevBottom; - if (diff >= danmus[1].height) return prevBottom; + if (diff >= danmu.$ref.clientHeight) return prevBottom; } // 方法2:找出所有弹幕的右侧最多空白的的位置插入 const topMap = []; @@ -659,7 +659,7 @@ function calculatedTop(danmus) { function getDanmuTop(ins, danmu) { const { $player } = ins.art.template; const danmus = ins.queue.filter((item)=>{ - return item.mode === danmu.mode && item.$state === 'emit' && item.$ref && item.$ref.style.fontSize === danmu.$ref.style.fontSize && item.$ref.offsetTop <= $player.clientHeight - ins.marginBottom; + return item.$ref && item.$state === 'emit' && item.mode === danmu.mode && item.$ref.offsetTop <= $player.clientHeight - ins.marginBottom; }).map((item)=>{ return { top: item.$ref.offsetTop, @@ -685,7 +685,7 @@ function getDanmuTop(ins, danmu) { height: ins.marginBottom, width: $player.clientWidth }); - return calculatedTop(danmus); + return calculatedTop(danmus, danmu); } exports.default = getDanmuTop; diff --git a/docs/uncompiled/artplayer-plugin-danmuku/index.js.map b/docs/uncompiled/artplayer-plugin-danmuku/index.js.map index 495ea21c3..1acd3cff4 100644 --- a/docs/uncompiled/artplayer-plugin-danmuku/index.js.map +++ b/docs/uncompiled/artplayer-plugin-danmuku/index.js.map @@ -1 +1 @@ -{"mappings":"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","sources":["src/index.js","src/danmuku.js","src/i18n.js","../../node_modules/@parcel/transformer-js/src/esmodule-helpers.js","src/bilibili.js","src/getDanmuTop.js"],"sourcesContent":["import Danmuku from './danmuku';\n\nexport default function artplayerPluginDanmuku(option) {\n return (art) => {\n const danmuku = new Danmuku(art, option);\n return {\n name: 'artplayerPluginDanmuku',\n emit: danmuku.emit.bind(danmuku),\n config: danmuku.config.bind(danmuku),\n hide: danmuku.hide.bind(danmuku),\n show: danmuku.show.bind(danmuku),\n get isHide() {\n return danmuku.isHide;\n },\n };\n };\n}\n\nwindow['artplayerPluginDanmuku'] = artplayerPluginDanmuku;\n","import i18n from './i18n';\nimport { bilibiliDanmuParseFromUrl } from './bilibili';\nimport getDanmuTop from './getDanmuTop';\n\nexport default class Danmuku {\n constructor(art, option) {\n art.i18n.update(i18n);\n this.art = art;\n this.utils = art.constructor.utils;\n this.validator = art.constructor.validator;\n\n this.queue = [];\n this.option = {};\n this.config(option);\n this.isStop = false;\n this.isHide = false;\n this.animationFrameTimer = null;\n this.$danmuku = art.template.$danmuku;\n\n art.on('video:play', this.start.bind(this));\n art.on('video:playing', this.start.bind(this));\n art.on('video:pause', this.stop.bind(this));\n art.on('video:waiting', this.stop.bind(this));\n art.on('resize', this.resize.bind(this));\n art.on('destroy', this.stop.bind(this));\n art.on('fullscreen', this.reset.bind(this));\n art.on('fullscreenWeb', this.reset.bind(this));\n\n this.load();\n }\n\n static get option() {\n return {\n danmuku: [],\n speed: 5,\n margin: [10, 100],\n opacity: 1,\n fontSize: 25,\n filter: () => true,\n synchronousPlayback: false,\n };\n }\n\n static get scheme() {\n return {\n danmuku: 'array|function|string',\n speed: 'number',\n margin: 'array',\n opacity: 'number',\n fontSize: 'number',\n filter: 'function',\n synchronousPlayback: 'boolean',\n };\n }\n\n get isRotate() {\n return this.art.plugins.autoOrientation && this.art.plugins.autoOrientation.state;\n }\n\n get marginTop() {\n const { clamp } = this.utils;\n const { $player } = this.art.template;\n const value = this.option.margin[0];\n\n if (typeof value === 'number') {\n return clamp(value, 0, $player.clientHeight);\n }\n\n if (typeof value === 'string' && value.endsWith('%')) {\n const ratio = parseFloat(value) / 100;\n return clamp($player.clientHeight * ratio, 0, $player.clientHeight);\n }\n\n return Danmuku.option.margin[0];\n }\n\n get marginBottom() {\n const { clamp } = this.utils;\n const { $player } = this.art.template;\n const value = this.option.margin[1];\n\n if (typeof value === 'number') {\n return clamp(value, 0, $player.clientHeight);\n }\n\n if (typeof value === 'string' && value.endsWith('%')) {\n const ratio = parseFloat(value) / 100;\n return clamp($player.clientHeight * ratio, 0, $player.clientHeight);\n }\n\n return Danmuku.option.margin[1];\n }\n\n filter(state, callback) {\n return this.queue.filter((danmu) => danmu.$state === state).map(callback);\n }\n\n getRect(ref, key) {\n const rect = ref.getBoundingClientRect();\n\n const bottom = rect.bottom;\n const height = rect.height;\n const left = rect.left;\n const right = rect.right;\n const top = rect.top;\n const width = rect.width;\n const x = rect.x;\n const y = rect.y;\n\n const result = {\n bottom,\n height,\n left,\n right,\n top,\n width,\n x,\n y,\n };\n\n if (this.isRotate) {\n result.bottom = left;\n result.left = top;\n result.top = right;\n result.right = bottom;\n result.height = width;\n result.width = height;\n result.x = y;\n result.y = x;\n }\n\n return key ? result[key] : result;\n }\n\n getDanmuRef() {\n const result = this.queue.find((danmu) => {\n return danmu.$ref && danmu.$state === 'wait';\n });\n\n if (result) {\n const { $ref } = result;\n result.$ref = null;\n return $ref;\n }\n\n const $ref = document.createElement('div');\n $ref.style.cssText = `\n user-select: none;\n position: absolute;\n white-space: pre;\n pointer-events: none;\n perspective: 500px;\n display: inline-block;\n will-change: transform;\n font-family: SimHei, \"Microsoft JhengHei\", Arial, Helvetica, sans-serif;\n font-weight: normal;\n line-height: 1.125;\n text-shadow: rgb(0, 0, 0) 1px 0px 1px, rgb(0, 0, 0) 0px 1px 1px, rgb(0, 0, 0) 0px -1px 1px, rgb(0, 0, 0) -1px 0px 1px;\n `;\n\n return $ref;\n }\n\n async load() {\n this.queue = [];\n this.$danmuku.innerText = '';\n let danmus = [];\n\n try {\n if (typeof this.option.danmuku === 'function') {\n danmus = await this.option.danmuku();\n } else if (typeof this.option.danmuku.then === 'function') {\n danmus = await this.option.danmuku;\n } else if (typeof this.option.danmuku === 'string') {\n danmus = await bilibiliDanmuParseFromUrl(this.option.danmuku);\n } else {\n danmus = this.option.danmuku;\n }\n\n this.utils.errorHandle(Array.isArray(danmus), 'Danmuku need return an array as result');\n this.art.emit('artplayerPluginDanmuku:loaded', danmus);\n danmus.forEach(this.emit.bind(this));\n } catch (error) {\n this.art.emit('artplayerPluginDanmuku:error', error);\n throw error;\n }\n\n return this;\n }\n\n config(option) {\n const { clamp } = this.utils;\n\n this.option = Object.assign({}, Danmuku.option, this.option, option);\n this.validator(this.option, Danmuku.scheme);\n\n this.option.speed = clamp(this.option.speed, 1, 10);\n this.option.opacity = clamp(this.option.opacity, 0, 1);\n this.option.fontSize = clamp(this.option.fontSize, 12, 100);\n\n this.art.emit('artplayerPluginDanmuku:config', this.option);\n\n return this;\n }\n\n continue() {\n const { $player } = this.art.template;\n const playerWidth = this.getRect($player, 'width');\n\n this.filter('stop', (danmu) => {\n danmu.$state = 'emit';\n danmu.$ref.dataset.state = 'emit';\n danmu.$lastStartTime = Date.now();\n switch (danmu.mode) {\n case 0: {\n const danmuWidth = this.getRect(danmu.$ref, 'width');\n const translateX = playerWidth + danmuWidth;\n danmu.$ref.style.transform = `translateX(${-translateX}px) translateY(0px) translateZ(0px)`;\n danmu.$ref.style.transition = `transform ${danmu.$restTime}s linear 0s`;\n break;\n }\n default:\n break;\n }\n });\n\n return this;\n }\n\n suspend() {\n const { $player } = this.art.template;\n\n this.filter('emit', (danmu) => {\n danmu.$state = 'stop';\n danmu.$ref.dataset.state = 'stop';\n switch (danmu.mode) {\n case 0: {\n const { left: playerLeft, width: playerWidth } = this.getRect($player);\n const { left: danmuLeft } = this.getRect(danmu.$ref);\n const translateX = playerWidth - (danmuLeft - playerLeft);\n danmu.$ref.style.transform = `translateX(${-translateX}px) translateY(0px) translateZ(0px)`;\n danmu.$ref.style.transition = 'transform 0s linear 0s';\n break;\n }\n default:\n break;\n }\n });\n\n return this;\n }\n\n resize() {\n const { $player } = this.art.template;\n const { width: playerWidth } = this.getRect($player);\n\n this.filter('wait', (danmu) => {\n if (danmu.$ref) {\n danmu.$ref.style.border = 'none';\n danmu.$ref.style.left = `${playerWidth}px`;\n danmu.$ref.style.marginLeft = '0px';\n danmu.$ref.style.transform = 'translateX(0px) translateY(0px) translateZ(0px)';\n danmu.$ref.style.transition = 'transform 0s linear 0s';\n }\n });\n\n return this;\n }\n\n reset() {\n const { $player } = this.art.template;\n const { width: playerWidth } = this.getRect($player);\n\n this.filter('emit', (danmu) => {\n if (danmu.$ref) {\n danmu.$state = 'wait';\n danmu.$ref.dataset.state = 'wait';\n danmu.$ref.style.border = 'none';\n danmu.$ref.style.visibility = 'hidden';\n danmu.$ref.style.left = `${playerWidth}px`;\n danmu.$ref.style.marginLeft = '0px';\n danmu.$ref.style.transform = 'translateX(0px) translateY(0px) translateZ(0px)';\n danmu.$ref.style.transition = 'transform 0s linear 0s';\n }\n });\n }\n\n update() {\n const { $player } = this.art.template;\n this.animationFrameTimer = window.requestAnimationFrame(() => {\n if (this.art.playing && !this.isHide) {\n const playerWidth = this.getRect($player, 'width');\n\n this.filter('emit', (danmu) => {\n const time = (Date.now() - danmu.$lastStartTime) / 1000;\n danmu.$emitTime += time;\n danmu.$restTime -= time;\n danmu.$lastStartTime = Date.now();\n if (danmu.$restTime <= 0) {\n danmu.$state = 'wait';\n danmu.$ref.dataset.state = 'wait';\n danmu.$ref.style.border = 'none';\n danmu.$ref.style.visibility = 'hidden';\n danmu.$ref.style.left = `${playerWidth}px`;\n danmu.$ref.style.marginLeft = '0px';\n danmu.$ref.style.transform = 'translateX(0px) translateY(0px) translateZ(0px)';\n danmu.$ref.style.transition = 'transform 0s linear 0s';\n }\n });\n\n this.queue\n .filter(\n (danmu) =>\n this.art.currentTime + 0.1 >= danmu.time &&\n danmu.time >= this.art.currentTime - 0.1 &&\n danmu.$state === 'wait',\n )\n .forEach((danmu) => {\n danmu.$ref = this.getDanmuRef(this.queue);\n this.$danmuku.appendChild(danmu.$ref);\n danmu.$ref.style.visibility = 'visible';\n danmu.$ref.style.opacity = this.option.opacity;\n danmu.$ref.style.fontSize = `${this.option.fontSize}px`;\n danmu.$ref.innerText = danmu.text;\n danmu.$ref.style.color = danmu.color || '#fff';\n danmu.$ref.style.border = danmu.border ? `1px solid ${danmu.color || '#fff'}` : 'none';\n danmu.$restTime =\n this.option.synchronousPlayback && this.art.playbackRate\n ? this.option.speed / Number(this.art.playbackRate)\n : this.option.speed;\n const danmuWidth = this.getRect(danmu.$ref, 'width');\n const danmuTop = getDanmuTop(this, danmu);\n danmu.$state = 'emit';\n danmu.$ref.dataset.state = 'emit';\n danmu.$lastStartTime = Date.now();\n switch (danmu.mode) {\n case 0: {\n danmu.$ref.style.left = `${playerWidth}px`;\n danmu.$ref.style.top = `${danmuTop}px`;\n const translateX = playerWidth + danmuWidth;\n danmu.$ref.style.transform = `translateX(${-translateX}px) translateY(0px) translateZ(0px)`;\n danmu.$ref.style.transition = `transform ${danmu.$restTime}s linear 0s`;\n break;\n }\n case 1:\n danmu.$ref.style.top = `${danmuTop}px`;\n danmu.$ref.style.left = '50%';\n danmu.$ref.style.marginLeft = `-${danmuWidth / 2}px`;\n break;\n default:\n break;\n }\n });\n }\n\n if (!this.isStop) {\n this.update();\n }\n });\n return this;\n }\n\n stop() {\n this.isStop = true;\n this.suspend();\n window.cancelAnimationFrame(this.animationFrameTimer);\n this.art.emit('artplayerPluginDanmuku:stop');\n return this;\n }\n\n start() {\n this.isStop = false;\n this.continue();\n this.update();\n this.art.emit('artplayerPluginDanmuku:start');\n return this;\n }\n\n show() {\n this.isHide = false;\n this.$danmuku.style.display = 'block';\n this.art.emit('artplayerPluginDanmuku:show');\n return this;\n }\n\n hide() {\n this.isHide = true;\n this.$danmuku.style.display = 'none';\n this.art.emit('artplayerPluginDanmuku:hide');\n return this;\n }\n\n emit(danmu) {\n this.validator(danmu, {\n text: 'string',\n mode: 'number|undefined',\n color: 'string|undefined',\n time: 'number|undefined',\n border: 'boolean|undefined',\n });\n\n if (!this.option.filter(danmu)) return this;\n if (!danmu.text.trim()) return this;\n\n if (danmu.time) {\n danmu.time = this.utils.clamp(danmu.time, 0, Infinity);\n } else {\n danmu.time = this.art.currentTime + 0.5;\n }\n\n this.queue.push({\n mode: 0,\n ...danmu,\n $state: 'wait',\n $ref: null,\n $emitTime: 0,\n $restTime: 0,\n $lastStartTime: 0,\n });\n\n return this;\n }\n}\n","export default {\n 'zh-cn': {\n 'Danmu opacity': '弹幕透明度',\n 'Danmu speed': '弹幕速度',\n 'Danmu size': '弹幕大小',\n 'Danmu text cannot be empty': '弹幕文本不能为空',\n 'The length of the danmu does not exceed': '弹幕文本字数不能超过',\n 'Danmu speed synchronous playback multiple': '弹幕速度同步播放倍数',\n },\n 'zh-tw': {\n 'Danmu opacity': '彈幕透明度',\n 'Danmu speed': '彈幕速度',\n 'Danmu size': '弹幕大小',\n 'Danmu text cannot be empty': '彈幕文本不能為空',\n 'The length of the danmu does not exceed': '彈幕文本字數不能超過',\n 'Danmu speed synchronous playback multiple': '彈幕速度同步播放倍數',\n },\n};","exports.interopDefault = function (a) {\n return a && a.__esModule ? a : {default: a};\n};\n\nexports.defineInteropFlag = function (a) {\n Object.defineProperty(a, '__esModule', {value: true});\n};\n\nexports.exportAll = function (source, dest) {\n Object.keys(source).forEach(function (key) {\n if (key === 'default' || key === '__esModule' || dest.hasOwnProperty(key)) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function () {\n return source[key];\n },\n });\n });\n\n return dest;\n};\n\nexports.export = function (dest, destName, get) {\n Object.defineProperty(dest, destName, {\n enumerable: true,\n get: get,\n });\n};\n","export function getMode(key) {\n switch (key) {\n case 1:\n case 2:\n case 3:\n return 0;\n case 4:\n case 5:\n return 1;\n default:\n return 0;\n }\n}\n\nexport function bilibiliDanmuParseFromXml(xmlString) {\n if (typeof xmlString !== 'string') return [];\n const srtList = xmlString.match(/[\\S ]*?)<\\/d>/gi);\n return srtList && srtList.length\n ? srtList.map((item) => {\n const [, attrStr, text] = item.match(/(.+)<\\/d>/);\n const attr = attrStr.split(',');\n return attr.length === 8 && text.trim()\n ? {\n text,\n time: Number(attr[0]),\n mode: getMode(Number(attr[1])),\n fontSize: Number(attr[2]),\n color: `#${Number(attr[3]).toString(16)}`,\n timestamp: Number(attr[4]),\n pool: Number(attr[5]),\n userID: attr[6],\n rowID: Number(attr[7]),\n }\n : null;\n })\n : [];\n}\n\nexport function bilibiliDanmuParseFromUrl(url) {\n return fetch(url)\n .then((res) => res.text())\n .then((xmlString) => bilibiliDanmuParseFromXml(xmlString));\n}\n","function calculatedTop(danmus) {\n // 方法1:两两对比,只要找到间隔能塞进一条弹幕的高度的,则马上插入\n for (let index = 1; index < danmus.length; index += 1) {\n const item = danmus[index];\n const prev = danmus[index - 1];\n const prevBottom = prev.top + prev.height;\n const diff = item.top - prevBottom;\n if (diff >= danmus[1].height) {\n return prevBottom;\n }\n }\n\n // 方法2:找出所有弹幕的右侧最多空白的的位置插入\n const topMap = [];\n for (let index = 1; index < danmus.length - 1; index += 1) {\n const item = danmus[index];\n if (topMap.length) {\n const last = topMap[topMap.length - 1];\n if (last[0].top === item.top) {\n last.push(item);\n } else {\n topMap.push([item]);\n }\n } else {\n topMap.push([item]);\n }\n }\n\n topMap.sort((prev, next) => {\n const nextMinRight = Math.min(...next.map((item) => item.right));\n const prevMinRight = Math.min(...prev.map((item) => item.right));\n return nextMinRight * next.length - prevMinRight * prev.length;\n });\n\n return topMap[0][0].top;\n}\n\nexport default function getDanmuTop(ins, danmu) {\n const { $player } = ins.art.template;\n\n const danmus = ins.queue\n .filter((item) => {\n return (\n item.mode === danmu.mode &&\n item.$state === 'emit' &&\n item.$ref &&\n item.$ref.style.fontSize === danmu.$ref.style.fontSize &&\n item.$ref.offsetTop <= $player.clientHeight - ins.marginBottom\n );\n })\n .map((item) => {\n return {\n top: item.$ref.offsetTop,\n left: item.$ref.offsetLeft,\n height: item.$ref.clientHeight,\n width: item.$ref.clientWidth,\n right: $player.clientWidth - item.$ref.offsetLeft - item.$ref.clientWidth,\n };\n })\n .sort((prev, next) => prev.top - next.top);\n\n if (danmus.length === 0) {\n return ins.marginTop;\n }\n\n danmus.unshift({\n top: 0,\n left: 0,\n right: 0,\n height: ins.marginTop,\n width: $player.clientWidth,\n });\n\n danmus.push({\n top: $player.clientHeight - ins.marginBottom,\n left: 0,\n right: 0,\n height: ins.marginBottom,\n width: $player.clientWidth,\n });\n\n return calculatedTop(danmus);\n}\n"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../../../packages/artplayer-plugin-danmuku/"} \ No newline at end of file +{"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAAA,mCAAgC;;AAEjB,SAAS,sBAAsB,CAAC,MAAM,EAAE;IACnD,OAAO,CAAC,GAAG,GAAK;QACZ,MAAM,OAAO,GAAG,IAAI,uBAAO,CAAC,GAAG,EAAE,MAAM,CAAC,AAAC;QACzC,OAAO;YACH,IAAI,EAAE,wBAAwB;YAC9B,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YAChC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;YACpC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YAChC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YAChC,IAAI,MAAM,IAAG;gBACT,OAAO,OAAO,CAAC,MAAM,CAAC;aACzB;SACJ,CAAC;KACL,CAAC;CACL;kBAduB,sBAAsB;AAgB9C,MAAM,CAAC,wBAAwB,CAAC,GAAG,sBAAsB,CAAC;;;AClB1D;;AAAA,6BAA0B;;AAC1B,qCAAuD;AACvD,2CAAwC;;AAEzB,MAAM,OAAO;IACxB,YAAY,GAAG,EAAE,MAAM,CAAE;QACrB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAI,CAAC,CAAC;QACtB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC;QAE3C,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAEtC,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5C,GAAG,CAAC,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,GAAG,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5C,GAAG,CAAC,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9C,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACzC,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACxC,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5C,GAAG,CAAC,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE/C,IAAI,CAAC,IAAI,EAAE,CAAC;KACf;IAED,WAAW,MAAM,GAAG;QAChB,OAAO;YACH,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,CAAC;YACR,MAAM,EAAE;AAAC,kBAAE;AAAE,mBAAG;aAAC;YACjB,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE,IAAM,IAAI;YAAA;YAClB,mBAAmB,EAAE,KAAK;SAC7B,CAAC;KACL;IAED,WAAW,MAAM,GAAG;QAChB,OAAO;YACH,OAAO,EAAE,uBAAuB;YAChC,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,OAAO;YACf,OAAO,EAAE,QAAQ;YACjB,QAAQ,EAAE,QAAQ;YAClB,MAAM,EAAE,UAAU;YAClB,mBAAmB,EAAE,SAAS;SACjC,CAAC;KACL;IAED,IAAI,QAAQ,GAAG;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC;KACrF;IAED,IAAI,SAAS,GAAG;QACZ,MAAM,EAAE,KAAK,CAAA,EAAE,GAAG,IAAI,CAAC,KAAK,AAAC;QAC7B,MAAM,EAAE,OAAO,CAAA,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,AAAC;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,AAAC;QAEpC,IAAI,OAAO,KAAK,KAAK,QAAQ,EACzB,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QAGjD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAClD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,GAAG,AAAC;YACtC,OAAO,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;SACvE;QAED,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KACnC;IAED,IAAI,YAAY,GAAG;QACf,MAAM,EAAE,KAAK,CAAA,EAAE,GAAG,IAAI,CAAC,KAAK,AAAC;QAC7B,MAAM,EAAE,OAAO,CAAA,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,AAAC;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,AAAC;QAEpC,IAAI,OAAO,KAAK,KAAK,QAAQ,EACzB,OAAO,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QAGjD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAClD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,GAAG,AAAC;YACtC,OAAO,KAAK,CAAC,OAAO,CAAC,YAAY,GAAG,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;SACvE;QAED,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;KACnC;IAED,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,GAAK,KAAK,CAAC,MAAM,KAAK,KAAK;QAAA,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KAC7E;IAED,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE;QACd,MAAM,IAAI,GAAG,GAAG,CAAC,qBAAqB,EAAE,AAAC;QAEzC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,AAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,AAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,AAAC;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,AAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,AAAC;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,AAAC;QACzB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,AAAC;QACjB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,AAAC;QAEjB,MAAM,MAAM,GAAG;YACX,MAAM;YACN,MAAM;YACN,IAAI;YACJ,KAAK;YACL,GAAG;YACH,KAAK;YACL,CAAC;YACD,CAAC;SACJ,AAAC;QAEF,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;YACrB,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC;YAClB,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC;YACnB,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC;YACtB,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;YACtB,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC;YACtB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;YACb,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;SAChB;QAED,OAAO,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;KACrC;IAED,WAAW,GAAG;QACV,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,GAAK;YACtC,OAAO,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC;SAChD,CAAC,AAAC;QAEH,IAAI,MAAM,EAAE;YACR,MAAM,EAAE,IAAI,CAAA,EAAE,GAAG,MAAM,AAAC;YACxB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;YACnB,OAAO,IAAI,CAAC;SACf;QAED,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,AAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC;;;;;;;;;;;;QAYtB,CAAC,CAAC;QAEF,OAAO,IAAI,CAAC;KACf;IAED,MAAM,IAAI,GAAG;QACT,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,EAAE,CAAC;QAC7B,IAAI,MAAM,GAAG,EAAE,AAAC;QAEhB,IAAI;YACA,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,UAAU,EACzC,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;iBAClC,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,UAAU,EACrD,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;iBAChC,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,QAAQ,EAC9C,MAAM,GAAG,MAAM,mCAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;iBAE9D,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAGjC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,wCAAwC,CAAC,CAAC;YACxF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,+BAA+B,EAAE,MAAM,CAAC,CAAC;YACvD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SACxC,CAAC,OAAO,KAAK,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;YACrD,MAAM,KAAK,CAAC;SACf;QAED,OAAO,IAAI,CAAC;KACf;IAED,MAAM,CAAC,MAAM,EAAE;QACX,MAAM,EAAE,KAAK,CAAA,EAAE,GAAG,IAAI,CAAC,KAAK,AAAC;QAE7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAE5C,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;QAE3D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,+BAA+B,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAE5D,OAAO,IAAI,CAAC;KACf;IAED,QAAQ,GAAG;QACP,MAAM,EAAE,OAAO,CAAA,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,AAAC;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,AAAC;QAEnD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,GAAK;YAC3B,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC;YAClC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAClC,OAAQ,KAAK,CAAC,IAAI;gBACd,KAAK,CAAC;oBAAE;wBACJ,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,AAAC;wBACrD,MAAM,UAAU,GAAG,WAAW,GAAG,UAAU,AAAC;wBAC5C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,mCAAmC,CAAC,CAAC;wBAC5F,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;wBACxE,MAAM;qBACT;gBACD;oBACI,MAAM;aACb;SACJ,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;KACf;IAED,OAAO,GAAG;QACN,MAAM,EAAE,OAAO,CAAA,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,AAAC;QAEtC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,GAAK;YAC3B,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC;YAClC,OAAQ,KAAK,CAAC,IAAI;gBACd,KAAK,CAAC;oBAAE;wBACJ,MAAM,EAAE,IAAI,EAAE,UAAU,CAAA,EAAE,KAAK,EAAE,WAAW,CAAA,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,AAAC;wBACvE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAA,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,AAAC;wBACrD,MAAM,UAAU,GAAG,WAAW,GAAI,CAAA,SAAS,GAAG,UAAU,CAAA,AAAC,AAAC;wBAC1D,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,mCAAmC,CAAC,CAAC;wBAC5F,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,wBAAwB,CAAC;wBACvD,MAAM;qBACT;gBACD;oBACI,MAAM;aACb;SACJ,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;KACf;IAED,MAAM,GAAG;QACL,MAAM,EAAE,OAAO,CAAA,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,AAAC;QACtC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAA,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,AAAC;QAErD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,GAAK;YAC3B,IAAI,KAAK,CAAC,IAAI,EAAE;gBACZ,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;gBACjC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;gBAC3C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;gBACpC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,iDAAiD,CAAC;gBAC/E,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,wBAAwB,CAAC;aAC1D;SACJ,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;KACf;IAED,KAAK,GAAG;QACJ,MAAM,EAAE,OAAO,CAAA,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,AAAC;QACtC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAA,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,AAAC;QAErD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,GAAK;YAC3B,IAAI,KAAK,CAAC,IAAI,EAAE;gBACZ,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;gBACtB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC;gBAClC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;gBACjC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;gBACvC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;gBAC3C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;gBACpC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,iDAAiD,CAAC;gBAC/E,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,wBAAwB,CAAC;aAC1D;SACJ,CAAC,CAAC;KACN;IAED,MAAM,GAAG;QACL,MAAM,EAAE,OAAO,CAAA,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,AAAC;QACtC,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC,IAAM;YAC1D,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAClC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,AAAC;gBAEnD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,GAAK;oBAC3B,MAAM,IAAI,GAAG,AAAC,CAAA,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,cAAc,CAAA,GAAI,IAAI,AAAC;oBACxD,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC;oBACxB,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC;oBACxB,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAClC,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,EAAE;wBACtB,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;wBACtB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC;wBAClC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;wBACjC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;wBACvC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;wBAC3C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;wBACpC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,iDAAiD,CAAC;wBAC/E,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,wBAAwB,CAAC;qBAC1D;iBACJ,CAAC,CAAC;gBAEH,IAAI,CAAC,KAAK,CACL,MAAM,CACH,CAAC,KAAK,GACF,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,IACxC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,GAAG,IACxC,KAAK,CAAC,MAAM,KAAK,MAAM;gBAAA,CAC9B,CACA,OAAO,CAAC,CAAC,KAAK,GAAK;oBAChB,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC1C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACtC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;oBACxC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;oBAC/C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAC1E,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;oBAClC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC;oBAC/C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC;oBACvF,KAAK,CAAC,SAAS,GACX,IAAI,CAAC,MAAM,CAAC,mBAAmB,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,GAClD,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GACjD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;oBAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,AAAC;oBACrD,MAAM,QAAQ,GAAG,2BAAW,CAAC,IAAI,EAAE,KAAK,CAAC,AAAC;oBAC1C,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;oBACtB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC;oBAClC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAClC,OAAQ,KAAK,CAAC,IAAI;wBACd,KAAK,CAAC;4BAAE;gCACJ,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;gCAC3C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;gCACvC,MAAM,UAAU,GAAG,WAAW,GAAG,UAAU,AAAC;gCAC5C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,mCAAmC,CAAC,CAAC;gCAC5F,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gCACxE,MAAM;6BACT;wBACD,KAAK,CAAC;4BACF,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;4BACvC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;4BAC9B,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;4BACrD,MAAM;wBACV;4BACI,MAAM;qBACb;iBACJ,CAAC,CAAC;aACV;YAED,IAAI,CAAC,IAAI,CAAC,MAAM,EACZ,IAAI,CAAC,MAAM,EAAE,CAAC;SAErB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;KACf;IAED,IAAI,GAAG;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACtD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;KACf;IAED,KAAK,GAAG;QACJ,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;KACf;IAED,IAAI,GAAG;QACH,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QACtC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;KACf;IAED,IAAI,GAAG;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QACrC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;KACf;IAED,IAAI,CAAC,KAAK,EAAE;QACR,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;YAClB,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,kBAAkB;YACxB,KAAK,EAAE,kBAAkB;YACzB,IAAI,EAAE,kBAAkB;YACxB,MAAM,EAAE,mBAAmB;SAC9B,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,IAAI,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,IAAI,CAAC;QAEpC,IAAI,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;aAEvD,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC;QAG5C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,CAAC;YACP,GAAG,KAAK;YACR,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI;YACV,SAAS,EAAE,CAAC;YACZ,SAAS,EAAE,CAAC;YACZ,cAAc,EAAE,CAAC;SACpB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;KACf;CACJ;kBAlaoB,OAAO;;;ACJ5B;;kBAAe;IACX,OAAO,EAAE;QACL,eAAe,EAAE,iBAAO;QACd,aAAG,EAAE,cAAM;QACb,YAAI,EAAE,cAAM;QACZ,4BAAoB,EAAE,0BAAU;QACxB,yCAAyB,EAAE,gCAAY;QACnC,2CAAuB,EAAE,gCAAY;KACxC;IACrB,OAAO,EAAE;QACL,eAAe,EAAE,iBAAO;QACd,aAAG,EAAE,cAAM;QACb,YAAI,EAAE,cAAM;QACZ,4BAAoB,EAAE,0BAAU;QACxB,yCAAyB,EAAE,gCAAY;QACnC,2CAAuB,EAAE,gCAAY;KAC5D;CACJ,AAjBD,CAiBE;;;ACjBF,OAAO,CAAC,cAAc,GAAG,SAAU,CAAC,EAAE;IACpC,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,GAAG;QAAC,OAAO,EAAE,CAAC;KAAC,CAAC;CAC7C,CAAC;AAEF,OAAO,CAAC,iBAAiB,GAAG,SAAU,CAAC,EAAE;IACvC,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,YAAY,EAAE;QAAC,KAAK,EAAE,IAAI;KAAC,CAAC,CAAC;CACvD,CAAC;AAEF,OAAO,CAAC,SAAS,GAAG,SAAU,MAAM,EAAE,IAAI,EAAE;IAC1C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,SAAU,GAAG,EAAE;QACzC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,YAAY,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EACvE,OAAO;QAGT,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE;YAC/B,UAAU,EAAE,IAAI;YAChB,GAAG,EAAE,WAAY;gBACf,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;aACpB;SACF,CAAC,CAAC;KACJ,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;CACb,CAAC;AAEF,OAAO,CAAC,MAAM,GAAG,SAAU,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE;IAC9C,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE;QACpC,UAAU,EAAE,IAAI;QAChB,GAAG,EAAE,GAAG;KACT,CAAC,CAAC;CACJ,CAAC;;;AC9BF;;AAAA,6CAAgB,OAAO;CAYtB;AAED,+DAAgB,yBAAyB;CAsBxC;AAED,+DAAgB,yBAAyB;CAIxC;AA1CM,SAAS,OAAO,CAAC,GAAG,EAAE;IACzB,OAAQ,GAAG;QACP,KAAK,CAAC,CAAC;QACP,KAAK,CAAC,CAAC;QACP,KAAK,CAAC;YACF,OAAO,CAAC,CAAC;QACb,KAAK,CAAC,CAAC;QACP,KAAK,CAAC;YACF,OAAO,CAAC,CAAC;QACb;YACI,OAAO,CAAC,CAAC;KAChB;CACJ;AAEM,SAAS,yBAAyB,CAAC,SAAS,EAAE;IACjD,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,OAAO,EAAE,CAAC;IAC7C,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,8BAA8B,AAAC;IAC9D,OAAO,OAAO,IAAI,OAAO,CAAC,MAAM,GAC1B,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,GAAK;QAClB,MAAM,GAAG,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,yBAAyB,AAAC;QAC9D,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,AAAC;QAChC,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,GACjC;YACI,IAAI;YACJ,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9B,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACzB,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;YACzC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;YACf,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACzB,GACD,IAAI,CAAC;KACd,CAAC,GACF,EAAE,CAAC;CACZ;AAEM,SAAS,yBAAyB,CAAC,GAAG,EAAE;IAC3C,OAAO,KAAK,CAAC,GAAG,CAAC,CACZ,IAAI,CAAC,CAAC,GAAG,GAAK,GAAG,CAAC,IAAI,EAAE;IAAA,CAAC,CACzB,IAAI,CAAC,CAAC,SAAS,GAAK,yBAAyB,CAAC,SAAS,CAAC;IAAA,CAAC,CAAC;CAClE;;;AC1CD;;AAAA,SAAS,aAAa,CAAC,MAAM,EAAE,KAAK,EAAE;IAClC,iGAAmC;IAC2B,IAAzD,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,CAAE;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,AAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,AAAC;QAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,AAAC;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,UAAU,AAAC;QACnC,IAAI,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,YAAY,EAC/B,OAAO,UAAU,CAAC;KAEzB;IAED,sEAA0B;IAC1B,MAAM,MAAM,GAAG,EAAE,AAAC;IAClB,IAAK,IAAI,MAAK,GAAG,CAAC,EAAE,MAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,MAAK,IAAI,CAAC,CAAE;QACvD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAK,CAAC,AAAC;QAC3B,IAAI,MAAM,CAAC,MAAM,EAAE;YACf,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,AAAC;YACvC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,EACxB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAEhB,MAAM,CAAC,IAAI,CAAC;gBAAC,IAAI;aAAC,CAAC,CAAC;SAE3B,MACG,MAAM,CAAC,IAAI,CAAC;YAAC,IAAI;SAAC,CAAC,CAAC;KAE3B;IAED,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,GAAK;QACxB,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAK,IAAI,CAAC,KAAK;QAAA,CAAC,CAAC,AAAC;QACjE,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAK,IAAI,CAAC,KAAK;QAAA,CAAC,CAAC,AAAC;QACjE,OAAO,YAAY,GAAG,IAAI,CAAC,MAAM,GAAG,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;KAClE,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;CAC3B;AAEc,SAAS,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE;IAC5C,MAAM,EAAE,OAAO,CAAA,EAAE,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,AAAC;IAErC,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CACnB,MAAM,CAAC,CAAC,IAAI,GAAK;QACd,OACI,IAAI,CAAC,IAAI,IACT,IAAI,CAAC,MAAM,KAAK,MAAM,IACtB,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IACxB,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,CAChE;KACL,CAAC,CACD,GAAG,CAAC,CAAC,IAAI,GAAK;QACX,OAAO;YACH,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS;YACxB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU;YAC1B,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY;YAC9B,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;YAC5B,KAAK,EAAE,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW;SAC5E,CAAC;KACL,CAAC,CACD,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,GAAK,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG;IAAA,CAAC,AAAC;IAE/C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EACnB,OAAO,GAAG,CAAC,SAAS,CAAC;IAGzB,MAAM,CAAC,OAAO,CAAC;QACX,GAAG,EAAE,CAAC;QACN,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,GAAG,CAAC,SAAS;QACrB,KAAK,EAAE,OAAO,CAAC,WAAW;KAC7B,CAAC,CAAC;IAEH,MAAM,CAAC,IAAI,CAAC;QACR,GAAG,EAAE,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY;QAC5C,IAAI,EAAE,CAAC;QACP,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,GAAG,CAAC,YAAY;QACxB,KAAK,EAAE,OAAO,CAAC,WAAW;KAC7B,CAAC,CAAC;IAEH,OAAO,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;CACvC;kBA5CuB,WAAW","sources":["src/index.js","src/danmuku.js","src/i18n.js","../../node_modules/@parcel/transformer-js/src/esmodule-helpers.js","src/bilibili.js","src/getDanmuTop.js"],"sourcesContent":["import Danmuku from './danmuku';\n\nexport default function artplayerPluginDanmuku(option) {\n return (art) => {\n const danmuku = new Danmuku(art, option);\n return {\n name: 'artplayerPluginDanmuku',\n emit: danmuku.emit.bind(danmuku),\n config: danmuku.config.bind(danmuku),\n hide: danmuku.hide.bind(danmuku),\n show: danmuku.show.bind(danmuku),\n get isHide() {\n return danmuku.isHide;\n },\n };\n };\n}\n\nwindow['artplayerPluginDanmuku'] = artplayerPluginDanmuku;\n","import i18n from './i18n';\nimport { bilibiliDanmuParseFromUrl } from './bilibili';\nimport getDanmuTop from './getDanmuTop';\n\nexport default class Danmuku {\n constructor(art, option) {\n art.i18n.update(i18n);\n this.art = art;\n this.utils = art.constructor.utils;\n this.validator = art.constructor.validator;\n\n this.queue = [];\n this.option = {};\n this.config(option);\n this.isStop = false;\n this.isHide = false;\n this.animationFrameTimer = null;\n this.$danmuku = art.template.$danmuku;\n\n art.on('video:play', this.start.bind(this));\n art.on('video:playing', this.start.bind(this));\n art.on('video:pause', this.stop.bind(this));\n art.on('video:waiting', this.stop.bind(this));\n art.on('resize', this.resize.bind(this));\n art.on('destroy', this.stop.bind(this));\n art.on('fullscreen', this.reset.bind(this));\n art.on('fullscreenWeb', this.reset.bind(this));\n\n this.load();\n }\n\n static get option() {\n return {\n danmuku: [],\n speed: 5,\n margin: [10, 100],\n opacity: 1,\n fontSize: 25,\n filter: () => true,\n synchronousPlayback: false,\n };\n }\n\n static get scheme() {\n return {\n danmuku: 'array|function|string',\n speed: 'number',\n margin: 'array',\n opacity: 'number',\n fontSize: 'number',\n filter: 'function',\n synchronousPlayback: 'boolean',\n };\n }\n\n get isRotate() {\n return this.art.plugins.autoOrientation && this.art.plugins.autoOrientation.state;\n }\n\n get marginTop() {\n const { clamp } = this.utils;\n const { $player } = this.art.template;\n const value = this.option.margin[0];\n\n if (typeof value === 'number') {\n return clamp(value, 0, $player.clientHeight);\n }\n\n if (typeof value === 'string' && value.endsWith('%')) {\n const ratio = parseFloat(value) / 100;\n return clamp($player.clientHeight * ratio, 0, $player.clientHeight);\n }\n\n return Danmuku.option.margin[0];\n }\n\n get marginBottom() {\n const { clamp } = this.utils;\n const { $player } = this.art.template;\n const value = this.option.margin[1];\n\n if (typeof value === 'number') {\n return clamp(value, 0, $player.clientHeight);\n }\n\n if (typeof value === 'string' && value.endsWith('%')) {\n const ratio = parseFloat(value) / 100;\n return clamp($player.clientHeight * ratio, 0, $player.clientHeight);\n }\n\n return Danmuku.option.margin[1];\n }\n\n filter(state, callback) {\n return this.queue.filter((danmu) => danmu.$state === state).map(callback);\n }\n\n getRect(ref, key) {\n const rect = ref.getBoundingClientRect();\n\n const bottom = rect.bottom;\n const height = rect.height;\n const left = rect.left;\n const right = rect.right;\n const top = rect.top;\n const width = rect.width;\n const x = rect.x;\n const y = rect.y;\n\n const result = {\n bottom,\n height,\n left,\n right,\n top,\n width,\n x,\n y,\n };\n\n if (this.isRotate) {\n result.bottom = left;\n result.left = top;\n result.top = right;\n result.right = bottom;\n result.height = width;\n result.width = height;\n result.x = y;\n result.y = x;\n }\n\n return key ? result[key] : result;\n }\n\n getDanmuRef() {\n const result = this.queue.find((danmu) => {\n return danmu.$ref && danmu.$state === 'wait';\n });\n\n if (result) {\n const { $ref } = result;\n result.$ref = null;\n return $ref;\n }\n\n const $ref = document.createElement('div');\n $ref.style.cssText = `\n user-select: none;\n position: absolute;\n white-space: pre;\n pointer-events: none;\n perspective: 500px;\n display: inline-block;\n will-change: transform;\n font-family: SimHei, \"Microsoft JhengHei\", Arial, Helvetica, sans-serif;\n font-weight: normal;\n line-height: 1.125;\n text-shadow: rgb(0, 0, 0) 1px 0px 1px, rgb(0, 0, 0) 0px 1px 1px, rgb(0, 0, 0) 0px -1px 1px, rgb(0, 0, 0) -1px 0px 1px;\n `;\n\n return $ref;\n }\n\n async load() {\n this.queue = [];\n this.$danmuku.innerText = '';\n let danmus = [];\n\n try {\n if (typeof this.option.danmuku === 'function') {\n danmus = await this.option.danmuku();\n } else if (typeof this.option.danmuku.then === 'function') {\n danmus = await this.option.danmuku;\n } else if (typeof this.option.danmuku === 'string') {\n danmus = await bilibiliDanmuParseFromUrl(this.option.danmuku);\n } else {\n danmus = this.option.danmuku;\n }\n\n this.utils.errorHandle(Array.isArray(danmus), 'Danmuku need return an array as result');\n this.art.emit('artplayerPluginDanmuku:loaded', danmus);\n danmus.forEach(this.emit.bind(this));\n } catch (error) {\n this.art.emit('artplayerPluginDanmuku:error', error);\n throw error;\n }\n\n return this;\n }\n\n config(option) {\n const { clamp } = this.utils;\n\n this.option = Object.assign({}, Danmuku.option, this.option, option);\n this.validator(this.option, Danmuku.scheme);\n\n this.option.speed = clamp(this.option.speed, 1, 10);\n this.option.opacity = clamp(this.option.opacity, 0, 1);\n this.option.fontSize = clamp(this.option.fontSize, 0, 100);\n\n this.art.emit('artplayerPluginDanmuku:config', this.option);\n\n return this;\n }\n\n continue() {\n const { $player } = this.art.template;\n const playerWidth = this.getRect($player, 'width');\n\n this.filter('stop', (danmu) => {\n danmu.$state = 'emit';\n danmu.$ref.dataset.state = 'emit';\n danmu.$lastStartTime = Date.now();\n switch (danmu.mode) {\n case 0: {\n const danmuWidth = this.getRect(danmu.$ref, 'width');\n const translateX = playerWidth + danmuWidth;\n danmu.$ref.style.transform = `translateX(${-translateX}px) translateY(0px) translateZ(0px)`;\n danmu.$ref.style.transition = `transform ${danmu.$restTime}s linear 0s`;\n break;\n }\n default:\n break;\n }\n });\n\n return this;\n }\n\n suspend() {\n const { $player } = this.art.template;\n\n this.filter('emit', (danmu) => {\n danmu.$state = 'stop';\n danmu.$ref.dataset.state = 'stop';\n switch (danmu.mode) {\n case 0: {\n const { left: playerLeft, width: playerWidth } = this.getRect($player);\n const { left: danmuLeft } = this.getRect(danmu.$ref);\n const translateX = playerWidth - (danmuLeft - playerLeft);\n danmu.$ref.style.transform = `translateX(${-translateX}px) translateY(0px) translateZ(0px)`;\n danmu.$ref.style.transition = 'transform 0s linear 0s';\n break;\n }\n default:\n break;\n }\n });\n\n return this;\n }\n\n resize() {\n const { $player } = this.art.template;\n const { width: playerWidth } = this.getRect($player);\n\n this.filter('wait', (danmu) => {\n if (danmu.$ref) {\n danmu.$ref.style.border = 'none';\n danmu.$ref.style.left = `${playerWidth}px`;\n danmu.$ref.style.marginLeft = '0px';\n danmu.$ref.style.transform = 'translateX(0px) translateY(0px) translateZ(0px)';\n danmu.$ref.style.transition = 'transform 0s linear 0s';\n }\n });\n\n return this;\n }\n\n reset() {\n const { $player } = this.art.template;\n const { width: playerWidth } = this.getRect($player);\n\n this.filter('emit', (danmu) => {\n if (danmu.$ref) {\n danmu.$state = 'wait';\n danmu.$ref.dataset.state = 'wait';\n danmu.$ref.style.border = 'none';\n danmu.$ref.style.visibility = 'hidden';\n danmu.$ref.style.left = `${playerWidth}px`;\n danmu.$ref.style.marginLeft = '0px';\n danmu.$ref.style.transform = 'translateX(0px) translateY(0px) translateZ(0px)';\n danmu.$ref.style.transition = 'transform 0s linear 0s';\n }\n });\n }\n\n update() {\n const { $player } = this.art.template;\n this.animationFrameTimer = window.requestAnimationFrame(() => {\n if (this.art.playing && !this.isHide) {\n const playerWidth = this.getRect($player, 'width');\n\n this.filter('emit', (danmu) => {\n const time = (Date.now() - danmu.$lastStartTime) / 1000;\n danmu.$emitTime += time;\n danmu.$restTime -= time;\n danmu.$lastStartTime = Date.now();\n if (danmu.$restTime <= 0) {\n danmu.$state = 'wait';\n danmu.$ref.dataset.state = 'wait';\n danmu.$ref.style.border = 'none';\n danmu.$ref.style.visibility = 'hidden';\n danmu.$ref.style.left = `${playerWidth}px`;\n danmu.$ref.style.marginLeft = '0px';\n danmu.$ref.style.transform = 'translateX(0px) translateY(0px) translateZ(0px)';\n danmu.$ref.style.transition = 'transform 0s linear 0s';\n }\n });\n\n this.queue\n .filter(\n (danmu) =>\n this.art.currentTime + 0.1 >= danmu.time &&\n danmu.time >= this.art.currentTime - 0.1 &&\n danmu.$state === 'wait',\n )\n .forEach((danmu) => {\n danmu.$ref = this.getDanmuRef(this.queue);\n this.$danmuku.appendChild(danmu.$ref);\n danmu.$ref.style.visibility = 'visible';\n danmu.$ref.style.opacity = this.option.opacity;\n danmu.$ref.style.fontSize = `${this.option.fontSize || danmu.fontSize}px`;\n danmu.$ref.innerText = danmu.text;\n danmu.$ref.style.color = danmu.color || '#fff';\n danmu.$ref.style.border = danmu.border ? `1px solid ${danmu.color || '#fff'}` : 'none';\n danmu.$restTime =\n this.option.synchronousPlayback && this.art.playbackRate\n ? this.option.speed / Number(this.art.playbackRate)\n : this.option.speed;\n const danmuWidth = this.getRect(danmu.$ref, 'width');\n const danmuTop = getDanmuTop(this, danmu);\n danmu.$state = 'emit';\n danmu.$ref.dataset.state = 'emit';\n danmu.$lastStartTime = Date.now();\n switch (danmu.mode) {\n case 0: {\n danmu.$ref.style.left = `${playerWidth}px`;\n danmu.$ref.style.top = `${danmuTop}px`;\n const translateX = playerWidth + danmuWidth;\n danmu.$ref.style.transform = `translateX(${-translateX}px) translateY(0px) translateZ(0px)`;\n danmu.$ref.style.transition = `transform ${danmu.$restTime}s linear 0s`;\n break;\n }\n case 1:\n danmu.$ref.style.top = `${danmuTop}px`;\n danmu.$ref.style.left = '50%';\n danmu.$ref.style.marginLeft = `-${danmuWidth / 2}px`;\n break;\n default:\n break;\n }\n });\n }\n\n if (!this.isStop) {\n this.update();\n }\n });\n return this;\n }\n\n stop() {\n this.isStop = true;\n this.suspend();\n window.cancelAnimationFrame(this.animationFrameTimer);\n this.art.emit('artplayerPluginDanmuku:stop');\n return this;\n }\n\n start() {\n this.isStop = false;\n this.continue();\n this.update();\n this.art.emit('artplayerPluginDanmuku:start');\n return this;\n }\n\n show() {\n this.isHide = false;\n this.$danmuku.style.display = 'block';\n this.art.emit('artplayerPluginDanmuku:show');\n return this;\n }\n\n hide() {\n this.isHide = true;\n this.$danmuku.style.display = 'none';\n this.art.emit('artplayerPluginDanmuku:hide');\n return this;\n }\n\n emit(danmu) {\n this.validator(danmu, {\n text: 'string',\n mode: 'number|undefined',\n color: 'string|undefined',\n time: 'number|undefined',\n border: 'boolean|undefined',\n });\n\n if (!this.option.filter(danmu)) return this;\n if (!danmu.text.trim()) return this;\n\n if (danmu.time) {\n danmu.time = this.utils.clamp(danmu.time, 0, Infinity);\n } else {\n danmu.time = this.art.currentTime + 0.5;\n }\n\n this.queue.push({\n mode: 0,\n ...danmu,\n $state: 'wait',\n $ref: null,\n $emitTime: 0,\n $restTime: 0,\n $lastStartTime: 0,\n });\n\n return this;\n }\n}\n","export default {\n 'zh-cn': {\n 'Danmu opacity': '弹幕透明度',\n 'Danmu speed': '弹幕速度',\n 'Danmu size': '弹幕大小',\n 'Danmu text cannot be empty': '弹幕文本不能为空',\n 'The length of the danmu does not exceed': '弹幕文本字数不能超过',\n 'Danmu speed synchronous playback multiple': '弹幕速度同步播放倍数',\n },\n 'zh-tw': {\n 'Danmu opacity': '彈幕透明度',\n 'Danmu speed': '彈幕速度',\n 'Danmu size': '弹幕大小',\n 'Danmu text cannot be empty': '彈幕文本不能為空',\n 'The length of the danmu does not exceed': '彈幕文本字數不能超過',\n 'Danmu speed synchronous playback multiple': '彈幕速度同步播放倍數',\n },\n};","exports.interopDefault = function (a) {\n return a && a.__esModule ? a : {default: a};\n};\n\nexports.defineInteropFlag = function (a) {\n Object.defineProperty(a, '__esModule', {value: true});\n};\n\nexports.exportAll = function (source, dest) {\n Object.keys(source).forEach(function (key) {\n if (key === 'default' || key === '__esModule' || dest.hasOwnProperty(key)) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function () {\n return source[key];\n },\n });\n });\n\n return dest;\n};\n\nexports.export = function (dest, destName, get) {\n Object.defineProperty(dest, destName, {\n enumerable: true,\n get: get,\n });\n};\n","export function getMode(key) {\n switch (key) {\n case 1:\n case 2:\n case 3:\n return 0;\n case 4:\n case 5:\n return 1;\n default:\n return 0;\n }\n}\n\nexport function bilibiliDanmuParseFromXml(xmlString) {\n if (typeof xmlString !== 'string') return [];\n const srtList = xmlString.match(/[\\S ]*?)<\\/d>/gi);\n return srtList && srtList.length\n ? srtList.map((item) => {\n const [, attrStr, text] = item.match(/(.+)<\\/d>/);\n const attr = attrStr.split(',');\n return attr.length === 8 && text.trim()\n ? {\n text,\n time: Number(attr[0]),\n mode: getMode(Number(attr[1])),\n fontSize: Number(attr[2]),\n color: `#${Number(attr[3]).toString(16)}`,\n timestamp: Number(attr[4]),\n pool: Number(attr[5]),\n userID: attr[6],\n rowID: Number(attr[7]),\n }\n : null;\n })\n : [];\n}\n\nexport function bilibiliDanmuParseFromUrl(url) {\n return fetch(url)\n .then((res) => res.text())\n .then((xmlString) => bilibiliDanmuParseFromXml(xmlString));\n}\n","function calculatedTop(danmus, danmu) {\n // 方法1:两两对比,只要找到间隔能塞进一条弹幕的高度的,则马上插入\n for (let index = 1; index < danmus.length; index += 1) {\n const item = danmus[index];\n const prev = danmus[index - 1];\n const prevBottom = prev.top + prev.height;\n const diff = item.top - prevBottom;\n if (diff >= danmu.$ref.clientHeight) {\n return prevBottom;\n }\n }\n\n // 方法2:找出所有弹幕的右侧最多空白的的位置插入\n const topMap = [];\n for (let index = 1; index < danmus.length - 1; index += 1) {\n const item = danmus[index];\n if (topMap.length) {\n const last = topMap[topMap.length - 1];\n if (last[0].top === item.top) {\n last.push(item);\n } else {\n topMap.push([item]);\n }\n } else {\n topMap.push([item]);\n }\n }\n\n topMap.sort((prev, next) => {\n const nextMinRight = Math.min(...next.map((item) => item.right));\n const prevMinRight = Math.min(...prev.map((item) => item.right));\n return nextMinRight * next.length - prevMinRight * prev.length;\n });\n\n return topMap[0][0].top;\n}\n\nexport default function getDanmuTop(ins, danmu) {\n const { $player } = ins.art.template;\n\n const danmus = ins.queue\n .filter((item) => {\n return (\n item.$ref &&\n item.$state === 'emit' &&\n item.mode === danmu.mode &&\n item.$ref.offsetTop <= $player.clientHeight - ins.marginBottom\n );\n })\n .map((item) => {\n return {\n top: item.$ref.offsetTop,\n left: item.$ref.offsetLeft,\n height: item.$ref.clientHeight,\n width: item.$ref.clientWidth,\n right: $player.clientWidth - item.$ref.offsetLeft - item.$ref.clientWidth,\n };\n })\n .sort((prev, next) => prev.top - next.top);\n\n if (danmus.length === 0) {\n return ins.marginTop;\n }\n\n danmus.unshift({\n top: 0,\n left: 0,\n right: 0,\n height: ins.marginTop,\n width: $player.clientWidth,\n });\n\n danmus.push({\n top: $player.clientHeight - ins.marginBottom,\n left: 0,\n right: 0,\n height: ins.marginBottom,\n width: $player.clientWidth,\n });\n\n return calculatedTop(danmus, danmu);\n}\n"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"../../../packages/artplayer-plugin-danmuku/"} \ No newline at end of file diff --git a/packages/artplayer-plugin-danmuku/src/danmuku.js b/packages/artplayer-plugin-danmuku/src/danmuku.js index 301f7bf3b..bf7ead015 100644 --- a/packages/artplayer-plugin-danmuku/src/danmuku.js +++ b/packages/artplayer-plugin-danmuku/src/danmuku.js @@ -196,7 +196,7 @@ export default class Danmuku { this.option.speed = clamp(this.option.speed, 1, 10); this.option.opacity = clamp(this.option.opacity, 0, 1); - this.option.fontSize = clamp(this.option.fontSize, 12, 100); + this.option.fontSize = clamp(this.option.fontSize, 0, 100); this.art.emit('artplayerPluginDanmuku:config', this.option); @@ -320,7 +320,7 @@ export default class Danmuku { this.$danmuku.appendChild(danmu.$ref); danmu.$ref.style.visibility = 'visible'; danmu.$ref.style.opacity = this.option.opacity; - danmu.$ref.style.fontSize = `${this.option.fontSize}px`; + danmu.$ref.style.fontSize = `${this.option.fontSize || danmu.fontSize}px`; danmu.$ref.innerText = danmu.text; danmu.$ref.style.color = danmu.color || '#fff'; danmu.$ref.style.border = danmu.border ? `1px solid ${danmu.color || '#fff'}` : 'none'; diff --git a/packages/artplayer-plugin-danmuku/src/getDanmuTop.js b/packages/artplayer-plugin-danmuku/src/getDanmuTop.js index ec1bf6891..8fe0a0b99 100644 --- a/packages/artplayer-plugin-danmuku/src/getDanmuTop.js +++ b/packages/artplayer-plugin-danmuku/src/getDanmuTop.js @@ -1,11 +1,11 @@ -function calculatedTop(danmus) { +function calculatedTop(danmus, danmu) { // 方法1:两两对比,只要找到间隔能塞进一条弹幕的高度的,则马上插入 for (let index = 1; index < danmus.length; index += 1) { const item = danmus[index]; const prev = danmus[index - 1]; const prevBottom = prev.top + prev.height; const diff = item.top - prevBottom; - if (diff >= danmus[1].height) { + if (diff >= danmu.$ref.clientHeight) { return prevBottom; } } @@ -41,10 +41,9 @@ export default function getDanmuTop(ins, danmu) { const danmus = ins.queue .filter((item) => { return ( - item.mode === danmu.mode && - item.$state === 'emit' && item.$ref && - item.$ref.style.fontSize === danmu.$ref.style.fontSize && + item.$state === 'emit' && + item.mode === danmu.mode && item.$ref.offsetTop <= $player.clientHeight - ins.marginBottom ); }) @@ -79,5 +78,5 @@ export default function getDanmuTop(ins, danmu) { width: $player.clientWidth, }); - return calculatedTop(danmus); + return calculatedTop(danmus, danmu); }