primocode 10.4.4 → 10.5.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.
- package/README.md +2 -2
- package/lib/catalogo.js +7 -3
- package/lib/conta.js +9 -3
- package/lib/estudio/batida.js +95 -10
- package/lib/estudio/colecao.js +185 -0
- package/lib/estudio/dados/fluent-3d.json +1 -0
- package/lib/estudio/dados/noto-animado.json +1 -0
- package/lib/estudio/estilo.js +6 -2
- package/lib/estudio/gerativo.js +181 -29
- package/lib/estudio/index.js +97 -22
- package/lib/estudio/kit/animacao.jsx +41 -0
- package/lib/estudio/kit/gerativo.jsx +63 -5
- package/lib/estudio/kit/index.jsx +3 -1
- package/lib/estudio/kit/tres.jsx +156 -0
- package/lib/estudio/kit/voxel.jsx +609 -0
- package/lib/estudio/kit.js +5 -1
- package/lib/estudio/personagem.js +75 -4
- package/lib/estudio/remotion.js +2 -0
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[["1f600","smile","smileys and emotions"],["1f603","smile with big eyes","smileys and emotions"],["1f604","grin","smileys and emotions"],["1f601","grinning","smileys and emotions"],["1f606","laughing","smileys and emotions"],["1f605","grin sweat","smileys and emotions"],["1f602","joy","smileys and emotions"],["1f923","rofl","smileys and emotions"],["1f62d","loudly crying","smileys and emotions"],["1f609","wink","smileys and emotions"],["1f617","kissing","smileys and emotions"],["1f619","kissing smiling eyes","smileys and emotions"],["1f61a","kissing closed eyes","smileys and emotions"],["1f618","kissing heart","smileys and emotions"],["1f970","heart face 3 hearts","smileys and emotions"],["1f60d","heart eyes","smileys and emotions"],["1f929","star struck","smileys and emotions"],["1f973","partying face","smileys and emotions"],["1fae0","melting","smileys and emotions"],["1f643","upside down face","smileys and emotions"],["1f642","slightly happy","smileys and emotions"],["1f972","happy cry","smileys and emotions"],["1f979","holding back tears","smileys and emotions"],["1f60a","blush","smileys and emotions"],["263a_fe0f","warm smile","smileys and emotions"],["1f60c","relieved","smileys and emotions"],["1f642_200d_2195_fe0f","head nod","smileys and emotions"],["1f642_200d_2194_fe0f","head shake","smileys and emotions"],["1f60f","smirk","smileys and emotions"],["1f924","drool","smileys and emotions"],["1f60b","yum","smileys and emotions"],["1f61b","stuck out tongue","smileys and emotions"],["1f61d","squinting tongue","smileys and emotions"],["1f61c","winky tongue","smileys and emotions"],["1f92a","zany face","smileys and emotions"],["1faea","distorted face","smileys and emotions"],["1f614","pensive","smileys and emotions"],["1f97a","pleading","smileys and emotions"],["1f62c","grimacing","smileys and emotions"],["1f611","expressionless","smileys and emotions"],["1f610","neutral face","smileys and emotions"],["1f636","mouth none","smileys and emotions"],["1f636_200d_1f32b_fe0f","face in clouds lost","smileys and emotions"],["1fae5","dotted line face invisible","smileys and emotions"],["1f910","zipper face","smileys and emotions"],["1fae1","salute","smileys and emotions"],["1f914","thinking face","smileys and emotions"],["1f92b","shushing face","smileys and emotions"],["1fae2","hand over mouth","smileys and emotions"],["1f92d","smiling eyes with hand over mouth chuckling","smileys and emotions"],["1f971","yawn","smileys and emotions"],["1f917","hug face","smileys and emotions"],["1fae3","peeking","smileys and emotions"],["1f631","screaming","smileys and emotions"],["1f928","raised eyebrow","smileys and emotions"],["1f9d0","monocle","smileys and emotions"],["1f612","unamused","smileys and emotions"],["1f644","rolling eyes","smileys and emotions"],["1f62e_200d_1f4a8","exhale","smileys and emotions"],["1f624","triumph","smileys and emotions"],["1f620","angry","smileys and emotions"],["1f621","rage","smileys and emotions"],["1f92c","cursing","smileys and emotions"],["1f61e","sad","smileys and emotions"],["1f613","sweat downcast","smileys and emotions"],["1f61f","worried","smileys and emotions"],["1f625","concerned","smileys and emotions"],["1f622","cry","smileys and emotions"],["2639_fe0f","big frown","smileys and emotions"],["1f641","frown","smileys and emotions"],["1fae4","diagonal mouth","smileys and emotions"],["1f615","slightly frowning","smileys and emotions"],["1f630","anxious with sweat","smileys and emotions"],["1f628","scared","smileys and emotions"],["1f627","anguished","smileys and emotions"],["1f626","gasp","smileys and emotions"],["1f62e","mouth open","smileys and emotions"],["1f62f","surprised hushed","smileys and emotions"],["1f632","astonished","smileys and emotions"],["1f633","flushed","smileys and emotions"],["1f92f","mind blown exploding head","smileys and emotions"],["1f616","scrunched mouth confounded zigzag mouth","smileys and emotions"],["1f623","scrunched eyes persevering","smileys and emotions"],["1f629","weary","smileys and emotions"],["1f62b","distraught","smileys and emotions"],["1f635","x eyes","smileys and emotions"],["1f635_200d_1f4ab","dizzy face","smileys and emotions"],["1fae8","shaking face","smileys and emotions"],["1f974","woozy","smileys and emotions"],["1f975","hot face sweat face","smileys and emotions"],["1f976","cold face","smileys and emotions"],["1f922","sick nauseated","smileys and emotions"],["1f92e","vomit","smileys and emotions"],["1fae9","tired bags under eyes","smileys and emotions"],["1f634","sleep","smileys and emotions"],["1f62a","sleepy","smileys and emotions"],["1f927","sneeze","smileys and emotions"],["1f912","thermometer face","smileys and emotions"],["1f915","bandage face","smileys and emotions"],["1f637","mask","smileys and emotions"],["1f925","liar","smileys and emotions"],["1f607","halo innocent","smileys and emotions"],["1f920","cowboy","smileys and emotions"],["1f911","money face","smileys and emotions"],["1f913","nerd face","smileys and emotions"],["1f60e","sunglasses face","smileys and emotions"],["1f978","disguise","smileys and emotions"],["1f921","clown","smileys and emotions"],["1f4a9","poop","smileys and emotions"],["1f608","imp smile","smileys and emotions"],["1f47f","imp frown","smileys and emotions"],["1f47b","ghost","smileys and emotions"],["1f480","skull","smileys and emotions"],["1f916","robot","smileys and emotions"],["1f479","ogre","smileys and emotions"],["2603_fe0f","snowman with snow","smileys and emotions"],["26c4","snowman","smileys and emotions"],["1f47d","alien","smileys and emotions"],["1f47e","alien monster","smileys and emotions"],["1f31a","moon face new","smileys and emotions"],["1f31d","moon face full","smileys and emotions"],["1f31e","sun with face","smileys and emotions"],["1f31b","moon face first quarter","smileys and emotions"],["1f31c","moon face last quarter","smileys and emotions"],["1f63a","smiley cat","smileys and emotions"],["1f638","smile cat","smileys and emotions"],["1f639","joy cat","smileys and emotions"],["1f63b","heart eyes cat","smileys and emotions"],["1f63c","smirk cat","smileys and emotions"],["1f63d","kissing cat","smileys and emotions"],["1f640","scream cat","smileys and emotions"],["1f63f","crying cat face","smileys and emotions"],["1f63e","pouting cat","smileys and emotions"],["1f648","see no evil monkey","smileys and emotions"],["1f649","hear no evil monkey","smileys and emotions"],["1f64a","speak no evil monkey","smileys and emotions"],["2b50","star","smileys and emotions"],["1f31f","glowing star","smileys and emotions"],["2728","sparkles","smileys and emotions"],["26a1","electricity zap lightning","smileys and emotions"],["1f4a5","collision","smileys and emotions"],["1faef","fight","smileys and emotions"],["1f573_fe0f","hole","smileys and emotions"],["1f525","fire burn lit","smileys and emotions"],["1f4af","100 one hundred hundred points","smileys and emotions"],["1f389","party popper","smileys and emotions"],["1f38a","confetti ball","smileys and emotions"],["2764_fe0f","red heart","smileys and emotions"],["1f9e1","orange heart","smileys and emotions"],["1f49b","yellow heart","smileys and emotions"],["1f49a","green heart","smileys and emotions"],["1fa75","light blue heart","smileys and emotions"],["1f499","blue heart","smileys and emotions"],["1f49c","purple heart","smileys and emotions"],["1f90e","brown heart","smileys and emotions"],["1f5a4","black heart","smileys and emotions"],["1fa76","grey heart","smileys and emotions"],["1f90d","white heart","smileys and emotions"],["1fa77","pink heart","smileys and emotions"],["1f498","cupid","smileys and emotions"],["1f49d","gift heart","smileys and emotions"],["1f496","sparkling heart","smileys and emotions"],["1f497","heart grow","smileys and emotions"],["1f493","beating heart","smileys and emotions"],["1f49e","revolving hearts","smileys and emotions"],["1f495","two hearts","smileys and emotions"],["1f48c","love letter","smileys and emotions"],["1f49f","heart box","smileys and emotions"],["2665_fe0f","heart","smileys and emotions"],["2763_fe0f","heart exclamation point","smileys and emotions"],["2764_fe0f_200d_1fa79","bandaged heart","smileys and emotions"],["1f494","broken heart","smileys and emotions"],["2764_fe0f_200d_1f525","fire heart","smileys and emotions"],["1f48b","kiss","smileys and emotions"],["1fac2","hugging","smileys and emotions"],["1f5e3_fe0f","speaking head","smileys and emotions"],["1f463","footprints","smileys and emotions"],["1fac6","fingerprint","smileys and emotions"],["1f9e0","brain","smileys and emotions"],["1fac0","anatomical heart","smileys and emotions"],["1fa78","blood","smileys and emotions"],["1f9a0","microbe virus","smileys and emotions"],["1f9b4","bone","smileys and emotions"],["1f440","eyes","smileys and emotions"],["1f441_fe0f","eye","smileys and emotions"],["1fae6","biting lip","smileys and emotions"],["1f443","nose","smileys and emotions"],["1f443_1f3fb","nose","smileys and emotions"],["1f443_1f3fc","nose","smileys and emotions"],["1f443_1f3fd","nose","smileys and emotions"],["1f443_1f3fe","nose","smileys and emotions"],["1f443_1f3ff","nose","smileys and emotions"],["1f442","ear","smileys and emotions"],["1f442_1f3fb","ear","smileys and emotions"],["1f442_1f3fc","ear","smileys and emotions"],["1f442_1f3fd","ear","smileys and emotions"],["1f442_1f3fe","ear","smileys and emotions"],["1f442_1f3ff","ear","smileys and emotions"],["1f9bb","hearing aid","smileys and emotions"],["1f9bb_1f3fb","hearing aid","smileys and emotions"],["1f9bb_1f3fc","hearing aid","smileys and emotions"],["1f9bb_1f3fd","hearing aid","smileys and emotions"],["1f9bb_1f3fe","hearing aid","smileys and emotions"],["1f9bb_1f3ff","hearing aid","smileys and emotions"],["1f9b6","foot","smileys and emotions"],["1f9b6_1f3fb","foot","smileys and emotions"],["1f9b6_1f3fc","foot","smileys and emotions"],["1f9b6_1f3fd","foot","smileys and emotions"],["1f9b6_1f3fe","foot","smileys and emotions"],["1f9b6_1f3ff","foot","smileys and emotions"],["1f9b5","leg","smileys and emotions"],["1f9b5_1f3fb","leg","smileys and emotions"],["1f9b5_1f3fc","leg","smileys and emotions"],["1f9b5_1f3fd","leg","smileys and emotions"],["1f9b5_1f3fe","leg","smileys and emotions"],["1f9b5_1f3ff","leg","smileys and emotions"],["1f9bf","leg mechanical","smileys and emotions"],["1f9be","arm mechanical","smileys and emotions"],["1f4aa","muscle flex bicep strong","smileys and emotions"],["1f4aa_1f3fb","muscle flex bicep strong","smileys and emotions"],["1f4aa_1f3fc","muscle flex bicep strong","smileys and emotions"],["1f4aa_1f3fd","muscle flex bicep strong","smileys and emotions"],["1f4aa_1f3fe","muscle flex bicep strong","smileys and emotions"],["1f4aa_1f3ff","muscle flex bicep strong","smileys and emotions"],["1f44f","clap","smileys and emotions"],["1f44f_1f3fb","clap","smileys and emotions"],["1f44f_1f3fc","clap","smileys and emotions"],["1f44f_1f3fd","clap","smileys and emotions"],["1f44f_1f3fe","clap","smileys and emotions"],["1f44f_1f3ff","clap","smileys and emotions"],["1f44d","thumbs up +1","smileys and emotions"],["1f44d_1f3fb","thumbs up +1","smileys and emotions"],["1f44d_1f3fc","thumbs up +1","smileys and emotions"],["1f44d_1f3fd","thumbs up +1","smileys and emotions"],["1f44d_1f3fe","thumbs up +1","smileys and emotions"],["1f44d_1f3ff","thumbs up +1","smileys and emotions"],["1f44e","thumbs down","smileys and emotions"],["1f44e_1f3fb","thumbs down","smileys and emotions"],["1f44e_1f3fc","thumbs down","smileys and emotions"],["1f44e_1f3fd","thumbs down","smileys and emotions"],["1f44e_1f3fe","thumbs down","smileys and emotions"],["1f44e_1f3ff","thumbs down","smileys and emotions"],["1faf6","heart hands","smileys and emotions"],["1faf6_1f3fb","heart hands","smileys and emotions"],["1faf6_1f3fc","heart hands","smileys and emotions"],["1faf6_1f3fd","heart hands","smileys and emotions"],["1faf6_1f3fe","heart hands","smileys and emotions"],["1faf6_1f3ff","heart hands","smileys and emotions"],["1f64c","raising hands hooray","smileys and emotions"],["1f64c_1f3fb","raising hands hooray","smileys and emotions"],["1f64c_1f3fc","raising hands hooray","smileys and emotions"],["1f64c_1f3fd","raising hands hooray","smileys and emotions"],["1f64c_1f3fe","raising hands hooray","smileys and emotions"],["1f64c_1f3ff","raising hands hooray","smileys and emotions"],["1f450","open hands","smileys and emotions"],["1f450_1f3fb","open hands","smileys and emotions"],["1f450_1f3fc","open hands","smileys and emotions"],["1f450_1f3fd","open hands","smileys and emotions"],["1f450_1f3fe","open hands","smileys and emotions"],["1f450_1f3ff","open hands","smileys and emotions"],["1f932","palms up","smileys and emotions"],["1f932_1f3fb","palms up","smileys and emotions"],["1f932_1f3fc","palms up","smileys and emotions"],["1f932_1f3fd","palms up","smileys and emotions"],["1f932_1f3fe","palms up","smileys and emotions"],["1f932_1f3ff","palms up","smileys and emotions"],["1f91c","fist rightwards","smileys and emotions"],["1f91c_1f3fb","fist rightwards","smileys and emotions"],["1f91c_1f3fc","fist rightwards","smileys and emotions"],["1f91c_1f3fd","fist rightwards","smileys and emotions"],["1f91c_1f3fe","fist rightwards","smileys and emotions"],["1f91c_1f3ff","fist rightwards","smileys and emotions"],["1f91b","fist leftwards","smileys and emotions"],["1f91b_1f3fb","fist leftwards","smileys and emotions"],["1f91b_1f3fc","fist leftwards","smileys and emotions"],["1f91b_1f3fd","fist leftwards","smileys and emotions"],["1f91b_1f3fe","fist leftwards","smileys and emotions"],["1f91b_1f3ff","fist leftwards","smileys and emotions"],["270a","raised fist","smileys and emotions"],["270a_1f3fb","raised fist","smileys and emotions"],["270a_1f3fc","raised fist","smileys and emotions"],["270a_1f3fd","raised fist","smileys and emotions"],["270a_1f3fe","raised fist","smileys and emotions"],["270a_1f3ff","raised fist","smileys and emotions"],["1f44a","fist bump","smileys and emotions"],["1f44a_1f3fb","fist bump","smileys and emotions"],["1f44a_1f3fc","fist bump","smileys and emotions"],["1f44a_1f3fd","fist bump","smileys and emotions"],["1f44a_1f3fe","fist bump","smileys and emotions"],["1f44a_1f3ff","fist bump","smileys and emotions"],["1faf3","palm down drop","smileys and emotions"],["1faf3_1f3fb","palm down drop","smileys and emotions"],["1faf3_1f3fc","palm down drop","smileys and emotions"],["1faf3_1f3fd","palm down drop","smileys and emotions"],["1faf3_1f3fe","palm down drop","smileys and emotions"],["1faf3_1f3ff","palm down drop","smileys and emotions"],["1faf4","palm up throw","smileys and emotions"],["1faf4_1f3fb","palm up throw","smileys and emotions"],["1faf4_1f3fc","palm up throw","smileys and emotions"],["1faf4_1f3fd","palm up throw","smileys and emotions"],["1faf4_1f3fe","palm up throw","smileys and emotions"],["1faf4_1f3ff","palm up throw","smileys and emotions"],["1faf1","rightwards hand","smileys and emotions"],["1faf1_1f3fb","rightwards hand","smileys and emotions"],["1faf1_1f3fc","rightwards hand","smileys and emotions"],["1faf1_1f3fd","rightwards hand","smileys and emotions"],["1faf1_1f3fe","rightwards hand","smileys and emotions"],["1faf1_1f3ff","rightwards hand","smileys and emotions"],["1faf2","leftwards hand","smileys and emotions"],["1faf2_1f3fb","leftwards hand","smileys and emotions"],["1faf2_1f3fc","leftwards hand","smileys and emotions"],["1faf2_1f3fd","leftwards hand","smileys and emotions"],["1faf2_1f3fe","leftwards hand","smileys and emotions"],["1faf2_1f3ff","leftwards hand","smileys and emotions"],["1faf8","push rightwards","smileys and emotions"],["1faf8_1f3fb","push rightwards","smileys and emotions"],["1faf8_1f3fc","push rightwards","smileys and emotions"],["1faf8_1f3fd","push rightwards","smileys and emotions"],["1faf8_1f3fe","push rightwards","smileys and emotions"],["1faf8_1f3ff","push rightwards","smileys and emotions"],["1faf7","push leftwards","smileys and emotions"],["1faf7_1f3fb","push leftwards","smileys and emotions"],["1faf7_1f3fc","push leftwards","smileys and emotions"],["1faf7_1f3fd","push leftwards","smileys and emotions"],["1faf7_1f3fe","push leftwards","smileys and emotions"],["1faf7_1f3ff","push leftwards","smileys and emotions"],["1f44b","wave","smileys and emotions"],["1f44b_1f3fb","wave","smileys and emotions"],["1f44b_1f3fc","wave","smileys and emotions"],["1f44b_1f3fd","wave","smileys and emotions"],["1f44b_1f3fe","wave","smileys and emotions"],["1f44b_1f3ff","wave","smileys and emotions"],["1f91a","back hand","smileys and emotions"],["1f91a_1f3fb","back hand","smileys and emotions"],["1f91a_1f3fc","back hand","smileys and emotions"],["1f91a_1f3fd","back hand","smileys and emotions"],["1f91a_1f3fe","back hand","smileys and emotions"],["1f91a_1f3ff","back hand","smileys and emotions"],["1f590_fe0f","palm","smileys and emotions"],["1f590_1f3fb","palm","smileys and emotions"],["1f590_1f3fc","palm","smileys and emotions"],["1f590_1f3fd","palm","smileys and emotions"],["1f590_1f3fe","palm","smileys and emotions"],["1f590_1f3ff","palm","smileys and emotions"],["270b","raised hand","smileys and emotions"],["270b_1f3fb","raised hand","smileys and emotions"],["270b_1f3fc","raised hand","smileys and emotions"],["270b_1f3fd","raised hand","smileys and emotions"],["270b_1f3fe","raised hand","smileys and emotions"],["270b_1f3ff","raised hand","smileys and emotions"],["1f596","vulcan prosper spock","smileys and emotions"],["1f596_1f3fb","vulcan prosper spock","smileys and emotions"],["1f596_1f3fc","vulcan prosper spock","smileys and emotions"],["1f596_1f3fd","vulcan prosper spock","smileys and emotions"],["1f596_1f3fe","vulcan prosper spock","smileys and emotions"],["1f596_1f3ff","vulcan prosper spock","smileys and emotions"],["1f91f","love you gesture","smileys and emotions"],["1f91f_1f3fb","love you gesture","smileys and emotions"],["1f91f_1f3fc","love you gesture","smileys and emotions"],["1f91f_1f3fd","love you gesture","smileys and emotions"],["1f91f_1f3fe","love you gesture","smileys and emotions"],["1f91f_1f3ff","love you gesture","smileys and emotions"],["1f918","metal horns","smileys and emotions"],["1f918_1f3fb","metal horns","smileys and emotions"],["1f918_1f3fc","metal horns","smileys and emotions"],["1f918_1f3fd","metal horns","smileys and emotions"],["1f918_1f3fe","metal horns","smileys and emotions"],["1f918_1f3ff","metal horns","smileys and emotions"],["270c_fe0f","victory v peace hand","smileys and emotions"],["270c_1f3fb","victory v peace hand","smileys and emotions"],["270c_1f3fc","victory v peace hand","smileys and emotions"],["270c_1f3fd","victory v peace hand","smileys and emotions"],["270c_1f3fe","victory v peace hand","smileys and emotions"],["270c_1f3ff","victory v peace hand","smileys and emotions"],["1f91e","crossed fingers","smileys and emotions"],["1f91e_1f3fb","crossed fingers","smileys and emotions"],["1f91e_1f3fc","crossed fingers","smileys and emotions"],["1f91e_1f3fd","crossed fingers","smileys and emotions"],["1f91e_1f3fe","crossed fingers","smileys and emotions"],["1f91e_1f3ff","crossed fingers","smileys and emotions"],["1faf0","hand with index finger and thumb crossed snap finger heart","smileys and emotions"],["1faf0_1f3fb","hand with index finger and thumb crossed snap finger heart","smileys and emotions"],["1faf0_1f3fc","hand with index finger and thumb crossed snap finger heart","smileys and emotions"],["1faf0_1f3fd","hand with index finger and thumb crossed snap finger heart","smileys and emotions"],["1faf0_1f3fe","hand with index finger and thumb crossed snap finger heart","smileys and emotions"],["1faf0_1f3ff","hand with index finger and thumb crossed snap finger heart","smileys and emotions"],["1f919","call me hand","smileys and emotions"],["1f919_1f3fb","call me hand","smileys and emotions"],["1f919_1f3fc","call me hand","smileys and emotions"],["1f919_1f3fd","call me hand","smileys and emotions"],["1f919_1f3fe","call me hand","smileys and emotions"],["1f919_1f3ff","call me hand","smileys and emotions"],["1f90c","pinched fingers","smileys and emotions"],["1f90c_1f3fb","pinched fingers","smileys and emotions"],["1f90c_1f3fc","pinched fingers","smileys and emotions"],["1f90c_1f3fd","pinched fingers","smileys and emotions"],["1f90c_1f3fe","pinched fingers","smileys and emotions"],["1f90c_1f3ff","pinched fingers","smileys and emotions"],["1f90f","pinch","smileys and emotions"],["1f90f_1f3fb","pinch","smileys and emotions"],["1f90f_1f3fc","pinch","smileys and emotions"],["1f90f_1f3fd","pinch","smileys and emotions"],["1f90f_1f3fe","pinch","smileys and emotions"],["1f90f_1f3ff","pinch","smileys and emotions"],["1f44c","ok","smileys and emotions"],["1f44c_1f3fb","ok","smileys and emotions"],["1f44c_1f3fc","ok","smileys and emotions"],["1f44c_1f3fd","ok","smileys and emotions"],["1f44c_1f3fe","ok","smileys and emotions"],["1f44c_1f3ff","ok","smileys and emotions"],["1faf5","pointing","smileys and emotions"],["1faf5_1f3fb","pointing","smileys and emotions"],["1faf5_1f3fc","pointing","smileys and emotions"],["1faf5_1f3fd","pointing","smileys and emotions"],["1faf5_1f3fe","pointing","smileys and emotions"],["1faf5_1f3ff","pointing","smileys and emotions"],["1f449","point right","smileys and emotions"],["1f449_1f3fb","point right","smileys and emotions"],["1f449_1f3fc","point right","smileys and emotions"],["1f449_1f3fd","point right","smileys and emotions"],["1f449_1f3fe","point right","smileys and emotions"],["1f449_1f3ff","point right","smileys and emotions"],["1f448","point left","smileys and emotions"],["1f448_1f3fb","point left","smileys and emotions"],["1f448_1f3fc","point left","smileys and emotions"],["1f448_1f3fd","point left","smileys and emotions"],["1f448_1f3fe","point left","smileys and emotions"],["1f448_1f3ff","point left","smileys and emotions"],["261d_fe0f","index finger","smileys and emotions"],["261d_1f3fb","index finger","smileys and emotions"],["261d_1f3fc","index finger","smileys and emotions"],["261d_1f3fd","index finger","smileys and emotions"],["261d_1f3fe","index finger","smileys and emotions"],["261d_1f3ff","index finger","smileys and emotions"],["1f446","point up","smileys and emotions"],["1f446_1f3fb","point up","smileys and emotions"],["1f446_1f3fc","point up","smileys and emotions"],["1f446_1f3fd","point up","smileys and emotions"],["1f446_1f3fe","point up","smileys and emotions"],["1f446_1f3ff","point up","smileys and emotions"],["1f447","point down","smileys and emotions"],["1f447_1f3fb","point down","smileys and emotions"],["1f447_1f3fc","point down","smileys and emotions"],["1f447_1f3fd","point down","smileys and emotions"],["1f447_1f3fe","point down","smileys and emotions"],["1f447_1f3ff","point down","smileys and emotions"],["1f595","middle finger","smileys and emotions"],["1f595_1f3fb","middle finger","smileys and emotions"],["1f595_1f3fc","middle finger","smileys and emotions"],["1f595_1f3fd","middle finger","smileys and emotions"],["1f595_1f3fe","middle finger","smileys and emotions"],["1f595_1f3ff","middle finger","smileys and emotions"],["270d_fe0f","writing hand","smileys and emotions"],["270d_1f3fb","writing hand","smileys and emotions"],["270d_1f3fc","writing hand","smileys and emotions"],["270d_1f3fd","writing hand","smileys and emotions"],["270d_1f3fe","writing hand","smileys and emotions"],["270d_1f3ff","writing hand","smileys and emotions"],["1f933","selfie","smileys and emotions"],["1f933_1f3fb","selfie","smileys and emotions"],["1f933_1f3fc","selfie","smileys and emotions"],["1f933_1f3fd","selfie","smileys and emotions"],["1f933_1f3fe","selfie","smileys and emotions"],["1f933_1f3ff","selfie","smileys and emotions"],["1f64f","folded hands please pray hope wish thank you high five","smileys and emotions"],["1f64f_1f3fb","folded hands please pray hope wish thank you high five","smileys and emotions"],["1f64f_1f3fc","folded hands please pray hope wish thank you high five","smileys and emotions"],["1f64f_1f3fd","folded hands please pray hope wish thank you high five","smileys and emotions"],["1f64f_1f3fe","folded hands please pray hope wish thank you high five","smileys and emotions"],["1f64f_1f3ff","folded hands please pray hope wish thank you high five","smileys and emotions"],["1f485","nail care","smileys and emotions"],["1f485_1f3fb","nail care","smileys and emotions"],["1f485_1f3fc","nail care","smileys and emotions"],["1f485_1f3fd","nail care","smileys and emotions"],["1f485_1f3fe","nail care","smileys and emotions"],["1f485_1f3ff","nail care","smileys and emotions"],["1f91d","handshake","smileys and emotions"],["1f91d_1f3fb","handshake","smileys and emotions"],["1faf1_1f3fb_200d_1faf2_1f3fc","handshake","smileys and emotions"],["1faf1_1f3fb_200d_1faf2_1f3fd","handshake","smileys and emotions"],["1faf1_1f3fb_200d_1faf2_1f3fe","handshake","smileys and emotions"],["1faf1_1f3fb_200d_1faf2_1f3ff","handshake","smileys and emotions"],["1faf1_1f3fc_200d_1faf2_1f3fb","handshake","smileys and emotions"],["1f91d_1f3fc","handshake","smileys and emotions"],["1faf1_1f3fc_200d_1faf2_1f3fd","handshake","smileys and emotions"],["1faf1_1f3fc_200d_1faf2_1f3fe","handshake","smileys and emotions"],["1faf1_1f3fc_200d_1faf2_1f3ff","handshake","smileys and emotions"],["1faf1_1f3fd_200d_1faf2_1f3fb","handshake","smileys and emotions"],["1faf1_1f3fd_200d_1faf2_1f3fc","handshake","smileys and emotions"],["1f91d_1f3fd","handshake","smileys and emotions"],["1faf1_1f3fd_200d_1faf2_1f3fe","handshake","smileys and emotions"],["1faf1_1f3fd_200d_1faf2_1f3ff","handshake","smileys and emotions"],["1faf1_1f3fe_200d_1faf2_1f3fb","handshake","smileys and emotions"],["1faf1_1f3fe_200d_1faf2_1f3fc","handshake","smileys and emotions"],["1faf1_1f3fe_200d_1faf2_1f3fd","handshake","smileys and emotions"],["1f91d_1f3fe","handshake","smileys and emotions"],["1faf1_1f3fe_200d_1faf2_1f3ff","handshake","smileys and emotions"],["1faf1_1f3ff_200d_1faf2_1f3fb","handshake","smileys and emotions"],["1faf1_1f3ff_200d_1faf2_1f3fc","handshake","smileys and emotions"],["1faf1_1f3ff_200d_1faf2_1f3fd","handshake","smileys and emotions"],["1faf1_1f3ff_200d_1faf2_1f3fe","handshake","smileys and emotions"],["1f91d_1f3ff","handshake","smileys and emotions"],["1fa82","parachute","people"],["1fac8","hairy creature","people"],["1f483","dancer woman","people"],["1f483_1f3fb","dancer woman","people"],["1f483_1f3fc","dancer woman","people"],["1f483_1f3fd","dancer woman","people"],["1f483_1f3fe","dancer woman","people"],["1f483_1f3ff","dancer woman","people"],["1f490","bouquet flowers","animals and nature"],["1f339","rose","animals and nature"],["1f940","wilted flower","animals and nature"],["1f337","tulip","animals and nature"],["1fab7","lotus","animals and nature"],["1f338","cherry blossom","animals and nature"],["1fabb","hyacinth","animals and nature"],["1f33c","blossom","animals and nature"],["1f342","fallen leaf","animals and nature"],["1f341","maple leaf","animals and nature"],["1f344","mushroom","animals and nature"],["1f33f","herb","animals and nature"],["1f331","plant seed","animals and nature"],["1f343","leaves","animals and nature"],["1f340","luck four leaf clover","animals and nature"],["1f335","cactus","animals and nature"],["1fabe","leafless tree","animals and nature"],["1f332","evergreen tree","animals and nature"],["1faa8","rock","animals and nature"],["1f6d8","debris landslide","animals and nature"],["1f30b","volcano","animals and nature"],["1f3de_fe0f","national park","animals and nature"],["1f305","sunrise","animals and nature"],["1f304","sunrise over mountains","animals and nature"],["1f30a","ocean","animals and nature"],["1f32c_fe0f","wind face","animals and nature"],["2744_fe0f","snowflake winter cold","animals and nature"],["1f300","cyclone","animals and nature"],["1f32a_fe0f","tornado","animals and nature"],["1f308","rainbow","animals and nature"],["1f4a7","droplet","animals and nature"],["2601_fe0f","cloud","animals and nature"],["1f327_fe0f","rain cloud","animals and nature"],["1f329_fe0f","cloud with lightning","animals and nature"],["26c5","partly sunny","animals and nature"],["1fa90","ringed planet","animals and nature"],["1f30d","globe showing Europe Africa","animals and nature"],["1f30e","globe showing Americas","animals and nature"],["1f30f","globe showing Asia Australia","animals and nature"],["1f30c","milky way","animals and nature"],["2604_fe0f","comet","animals and nature"],["1f981","lion face","animals and nature"],["1f43a","wolf","animals and nature"],["1f43b","bear face","animals and nature"],["1f43c","panda","animals and nature"],["1f98a","fox face","animals and nature"],["1f42e","cow face","animals and nature"],["1f984","unicorn","animals and nature"],["1f98e","lizard","animals and nature"],["1f409","dragon","animals and nature"],["1f996","t rex","animals and nature"],["1f995","dinosaur","animals and nature"],["1f422","turtle","animals and nature"],["1f40a","crocodile","animals and nature"],["1f40d","snake","animals and nature"],["1f438","frog","animals and nature"],["1f407","rabbit","animals and nature"],["1f400","rat","animals and nature"],["1f429","poodle","animals and nature"],["1f415","dog","animals and nature"],["1f9ae","guide dog","animals and nature"],["1f415_200d_1f9ba","service dog","animals and nature"],["1f416","pig","animals and nature"],["1f40e","racehorse","animals and nature"],["1facf","donkey","animals and nature"],["1f402","ox","animals and nature"],["1f410","goat","animals and nature"],["1f9a5","sloth","animals and nature"],["1f998","kangaroo","animals and nature"],["1f405","tiger","animals and nature"],["1f412","monkey","animals and nature"],["1f98d","gorilla","animals and nature"],["1f9a7","orangutan","animals and nature"],["1f43f_fe0f","chipmunk","animals and nature"],["1f99d","raccoon","animals and nature"],["1f994","hedgehog","animals and nature"],["1f9a6","otter","animals and nature"],["1f987","bat","animals and nature"],["1f426","bird","animals and nature"],["1f426_200d_2b1b","black bird","animals and nature"],["1f413","rooster","animals and nature"],["1f423","hatching chick","animals and nature"],["1f424","baby chick","animals and nature"],["1f425","hatched chick","animals and nature"],["1f985","eagle","animals and nature"],["1f989","owl","animals and nature"],["1f54a_fe0f","peace dove","animals and nature"],["1fabf","goose","animals and nature"],["1f9a9","flamingo","animals and nature"],["1f99a","peacock","animals and nature"],["1f426_200d_1f525","phoenix","animals and nature"],["1f427","penguin","animals and nature"],["1f9ad","seal","animals and nature"],["1f988","shark","animals and nature"],["1facd","orca","animals and nature"],["1f42c","dolphin","animals and nature"],["1f433","whale","animals and nature"],["1f41f","fish","animals and nature"],["1f421","blowfish","animals and nature"],["1f99e","lobster","animals and nature"],["1f980","crab","animals and nature"],["1f419","octopus","animals and nature"],["1fabc","jellyfish","animals and nature"],["1fae7","bubbles","animals and nature"],["1f982","scorpion","animals and nature"],["1f577_fe0f","spider","animals and nature"],["1f40c","snail","animals and nature"],["1f41c","ant","animals and nature"],["1f997","cricket","animals and nature"],["1f99f","mosquito","animals and nature"],["1fab3","cockroach","animals and nature"],["1fab0","fly","animals and nature"],["1f41d","bee","animals and nature"],["1f41e","lady bug","animals and nature"],["1f98b","butterfly","animals and nature"],["1f41b","bug","animals and nature"],["1fab1","worm","animals and nature"],["1f43e","paw prints","animals and nature"],["1f353","strawberry","food and drink"],["1f352","cherries","food and drink"],["1f34e","red apple","food and drink"],["1f345","tomato","food and drink"],["1f349","watermelon","food and drink"],["1f34a","tangerine orange mandarin","food and drink"],["1f955","carrot","food and drink"],["1f96d","mango","food and drink"],["1f34d","pineapple","food and drink"],["1f33d","ear of corn","food and drink"],["1f34b","lemon","food and drink"],["1f348","melon","food and drink"],["1f350","pear","food and drink"],["1fadb","pea pod","food and drink"],["1f96c","leafy green","food and drink"],["1fad1","bell pepper","food and drink"],["1f95d","kiwi fruit","food and drink"],["1f951","avocado","food and drink"],["1f966","broccoli","food and drink"],["1f952","cucumber","food and drink"],["1fad0","blueberries","food and drink"],["1f347","grapes","food and drink"],["1fadc","root vegetable beet turnip","food and drink"],["1f954","potato","food and drink"],["1f9c5","onion","food and drink"],["1fada","ginger","food and drink"],["1f9c4","garlic","food and drink"],["1fad8","beans","food and drink"],["1f35e","bread","food and drink"],["1f95e","pancakes","food and drink"],["1f373","cooking","food and drink"],["1f9c0","cheese wedge","food and drink"],["1f953","bacon","food and drink"],["1f357","poultry leg","food and drink"],["1f354","hamburger","food and drink"],["1f32d","hot dog","food and drink"],["1f968","pretzel","food and drink"],["1f355","pizza","food and drink"],["1f32e","taco","food and drink"],["1f32f","burrito","food and drink"],["1f35d","spaghetti","food and drink"],["1f957","green salad","food and drink"],["1f35c","steaming bowl","food and drink"],["1f362","oden","food and drink"],["1f361","dango","food and drink"],["1f368","ice cream","food and drink"],["1f366","soft ice cream","food and drink"],["1f967","pie","food and drink"],["1f369","doughnut","food and drink"],["1f36a","cookie","food and drink"],["1f9c2","salt","food and drink"],["1f37f","popcorn","food and drink"],["1f9cb","bubble tea milk tea","food and drink"],["1f9c3","beverage box","food and drink"],["1f37c","baby bottle","food and drink"],["1f375","teacup without handle","food and drink"],["2615","hot beverage","food and drink"],["1fad6","teapot","food and drink"],["1f9c9","mate","food and drink"],["1f37b","clinking beer mugs","food and drink"],["1f942","clinking glasses","food and drink"],["1f37e","bottle with popping cork","food and drink"],["1f377","wine glass","food and drink"],["1fad7","pour","food and drink"],["1f379","tropical drink","food and drink"],["1f962","chopsticks","food and drink"],["1f37d_fe0f","fork and knife with plate","food and drink"],["1f6d1","stop sign","travel and places"],["1f6a7","construction","travel and places"],["1f6a8","police car light","travel and places"],["26fd","fuel pump","travel and places"],["1f6df","ring buoy","travel and places"],["2693","anchor","travel and places"],["1f6a6","vertical traffic light","travel and places"],["1f6b2","bicycle","travel and places"],["1f3cd_fe0f","motorcycle","travel and places"],["1f697","automobile","travel and places"],["1f69a","delivery truck","travel and places"],["1f69c","tractor","travel and places"],["1f3ce_fe0f","racing car","travel and places"],["1f695","taxi","travel and places"],["1f68c","bus","travel and places"],["1f682","locomotive","travel and places"],["26f5","sailboat","travel and places"],["1f6f6","canoe","travel and places"],["1f6f8","flying saucer","travel and places"],["1f680","rocket","travel and places"],["2708_fe0f","airplane","travel and places"],["1f6eb","airplane departure","travel and places"],["1f6ec","airplane arrival","travel and places"],["1f3a2","roller coaster","travel and places"],["1f3a1","ferris wheel","travel and places"],["1f3a0","carousel horse","travel and places"],["1f5ff","moai","travel and places"],["1f3da_fe0f","derelict house","travel and places"],["1f3e0","house","travel and places"],["1f3d5_fe0f","camping","travel and places"],["1f307","sunset","travel and places"],["1f388","balloon","activities and events"],["1f382","birthday cake","activities and events"],["1f381","wrapped gift","activities and events"],["1f386","fireworks","activities and events"],["1fa94","diya lamp","activities and events"],["1fa85","piñata","activities and events"],["1faa9","mirror ball disco ball","activities and events"],["1f947","gold medal 1st place medal","activities and events"],["1f948","silver medal 2nd place medal","activities and events"],["1f949","bronze medal 3rd place medal","activities and events"],["1f3c6","trophy","activities and events"],["26bd","soccer ball","activities and events"],["26be","baseball","activities and events"],["1f94e","softball","activities and events"],["1f3c0","basketball","activities and events"],["1f3c9","rugby football","activities and events"],["1f3be","tennis","activities and events"],["1f3f8","badminton","activities and events"],["1f94d","lacrosse","activities and events"],["1f3cf","cricket game","activities and events"],["1f3d1","field hockey","activities and events"],["1f3d2","ice hockey","activities and events"],["1f3bf","skis","activities and events"],["26f8_fe0f","ice skate","activities and events"],["1f6fc","roller skates","activities and events"],["1fa70","ballet shoes","activities and events"],["1f6f9","skateboard","activities and events"],["26f3","flag in hole","activities and events"],["1f3af","direct hit target","activities and events"],["1f94f","flying disc","activities and events"],["1fa83","boomerang","activities and events"],["1fa81","kite","activities and events"],["1f3a3","fishing pole","activities and events"],["1f94b","martial arts uniform","activities and events"],["1f3b1","8 ball","activities and events"],["1f3d3","ping pong","activities and events"],["1f3b3","bowling","activities and events"],["265f_fe0f","chess pawn","activities and events"],["1f3b2","die","activities and events"],["1f3b0","slot machine","activities and events"],["1fa84","wand","activities and events"],["1f4f7","camera","activities and events"],["1f4f8","camera flash","activities and events"],["1fadf","splatter","activities and events"],["1f3b7","saxophone","activities and events"],["1f3ba","trumpet","activities and events"],["1fa8a","trombone","activities and events"],["1f3b8","guitar","activities and events"],["1fa95","banjo","activities and events"],["1f3bb","violin","activities and events"],["1fa89","harp","activities and events"],["1f941","drum","activities and events"],["1fa87","maracas","activities and events"],["1f4fa","television","activities and events"],["1f39e_fe0f","film","activities and events"],["1f3ac","clapper","activities and events"],["1f3ad","performing arts","activities and events"],["1f39f_fe0f","admission tickets","activities and events"],["1f4df","pager","objects"],["1f50c","electric plug","objects"],["1f50b","battery full","objects"],["1faab","battery low","objects"],["1f4bf","optical disk","objects"],["1f4bb","laptop computer","objects"],["1f5a8_fe0f","printer","objects"],["1fa8e","treasure","objects"],["1fa99","coin","objects"],["1f48e","gem stone","objects"],["1f4b8","money with wings","objects"],["2696_fe0f","balance scale","objects"],["1f6d2","shopping cart","objects"],["1f4a1","light bulb","objects"],["1f9f9","broom","objects"],["1f9e6","socks","objects"],["1f393","graduation cap","objects"],["1f451","crown","objects"],["1f48d","ring","objects"],["1faad","fan","objects"],["2602_fe0f","umbrella","objects"],["1f460","high heeled shoe","objects"],["1f45f","running shoe","objects"],["1f321_fe0f","thermometer","objects"],["1fa7a","stethoscope","objects"],["1f6e0_fe0f","hammer and wrench","objects"],["1fa8f","shovel dig","objects"],["2699_fe0f","gear","objects"],["26d3_fe0f_200d_1f4a5","broken chain","objects"],["26d3_fe0f","chains","objects"],["1f587_fe0f","linked paperclips","objects"],["2702_fe0f","scissors","objects"],["270f_fe0f","pencil","objects"],["1f4da","books","objects"],["1f4ca","bar chart","objects"],["1f4c8","chart increasing","objects"],["1f4c9","chart decreasing","objects"],["1f5d1_fe0f","wastebasket","objects"],["1f4e6","package","objects"],["1f5f3_fe0f","ballot box","objects"],["23f0","alarm clock","objects"],["231b","hourglass done","objects"],["23f3","hourglass not done","objects"],["1f6ce_fe0f","bellhop bell","objects"],["1f514","bell","objects"],["1f4e3","megaphone","objects"],["1f50e","magnifying glass tilted right","objects"],["1f52e","crystal ball","objects"],["1f4a3","bomb","objects"],["1faa4","mouse trap","objects"],["1f512","locked","objects"],["2660_fe0f","spade","symbols"],["2648","Aries","symbols"],["2649","Taurus","symbols"],["264a","Gemini","symbols"],["264b","Cancer","symbols"],["264c","Leo","symbols"],["264d","Virgo","symbols"],["264e","Libra","symbols"],["264f","Scorpio","symbols"],["2650","Sagittarius","symbols"],["2651","Capricorn","symbols"],["2652","Aquarius","symbols"],["2653","Pisces","symbols"],["26ce","Ophiuchus","symbols"],["1f5ef_fe0f","anger bubble","symbols"],["1f4ac","speech bubble","symbols"],["2757","exclamation exclamation mark","symbols"],["2753","question question mark ?","symbols"],["2049_fe0f","exclamation question mark !?","symbols"],["203c_fe0f","exclamation double !!","symbols"],["274c","cross mark x","symbols"],["1f198","sos","symbols"],["2668_fe0f","hot springs","symbols"],["1f4f4","phone off","symbols"],["2622_fe0f","radioactive","symbols"],["2623_fe0f","biohazard","symbols"],["26a0_fe0f","warning","symbols"],["2705","check mark check mark green","symbols"],["1f195","new","symbols"],["1f193","free","symbols"],["1f199","up!","symbols"],["1f197","ok button","symbols"],["1f192","cool","symbols"],["1f6ae","litter","symbols"],["262e_fe0f","peace symbol","symbols"],["262f_fe0f","yin yang","symbols"],["267e_fe0f","infinity","symbols"],["1f3b6","musical notes","symbols"],["2795","plus sign +","symbols"],["a9_fe0f","copyright","symbols"],["ae_fe0f","registered","symbols"],["2122_fe0f","trade mark","symbols"],["1f3c1","chequered flag","flags"],["1f6a9","triangular flag","flags"],["1f3f4","black flag","flags"],["1f3f3_fe0f","white flag","flags"]]
|
package/lib/estudio/estilo.js
CHANGED
|
@@ -33,7 +33,8 @@ const APELIDOS = { motion: 'gerativo', generativo: 'gerativo', kinetic: 'gerativ
|
|
|
33
33
|
tipografico: 'gerativo', 'tipográfico': 'gerativo', animacao: 'gerativo', 'animação': 'gerativo',
|
|
34
34
|
classico: 'motion', 'clássico': 'motion', 'motion-classico': 'motion', motion3d: 'motion',
|
|
35
35
|
absurdo: 'hibrido', misto: 'hibrido', mix: 'hibrido', 'híbrido': 'hibrido', limpo: 'motion', explainer: 'vox', editorial: 'vox', brand: 'marca', branding: 'marca', 'brand-reveal': 'marca', minimalista: 'fluido', minimal: 'fluido', clean: 'fluido', apple: 'fluido', launch: 'lancamento', 'lançamento': 'lancamento', produto: 'lancamento',
|
|
36
|
-
personagens: 'personagem', boneco: 'personagem', bonecos: 'personagem', conversa: 'personagem', dialogo: 'personagem', 'diálogo': 'personagem', podcast: 'personagem', gravado: 'personagem'
|
|
36
|
+
personagens: 'personagem', boneco: 'personagem', bonecos: 'personagem', conversa: 'personagem', dialogo: 'personagem', 'diálogo': 'personagem', podcast: 'personagem', gravado: 'personagem',
|
|
37
|
+
voxel: 'personagem', '3d': 'personagem', animacao3d: 'personagem', 'animação3d': 'personagem', mascote: 'personagem' };
|
|
37
38
|
|
|
38
39
|
const PEDE_FLUIDO = /\bfluid[oa]\b|minimalista|\bminimal\b|\bclean\b|\bapple\b/i;
|
|
39
40
|
const PEDE_MOTION = /\bmotion\b|anima[çc][ãa]o|animad[oa]/i;
|
|
@@ -43,7 +44,10 @@ const PEDE_LANCAMENTO = /lan[çc]amento|\blaunch|\bsaas\b|produto novo|apresenta
|
|
|
43
44
|
/* "Uma animação em 3D do Claude falando com o usuário... como se fosse gravado"
|
|
44
45
|
(10/10): personagem, boneco, avatar, conversa ou podcast em 3D vira o vídeo
|
|
45
46
|
GRAVADO em 3D (personagem.js). O 3D de produto continua no gerativo. */
|
|
46
|
-
|
|
47
|
+
/* "Animação 3D" sem objeto é o personagem em blocos (11/10, a referência do
|
|
48
|
+
Joel: bonecos voxel com render de cinema). O 3D de PRODUTO ("o fone
|
|
49
|
+
girando em 3D") continua no gerativo. */
|
|
50
|
+
const PEDE_PERSONAGEM = /anima[çc][ãa]o (em )?3\s?d|\b3\s?d animad|\bvoxel|minecraft|estilo (de )?blocos?|personage(m|ns)|\bbonec[oa]s?\b|\bavatar|mascote falando|\bpodcast\b|entrevista|(conversa|di[aá]logo|falando|explicando)[^.]{0,60}\b3\s?d\b|\b3\s?d\b[^.]{0,60}(conversa|di[aá]logo|falando|explicando|pessoa|gente)/i;
|
|
47
51
|
const PEDE_IMPACTO = /an[uú]nci|reels?|divulg|promo|lan[çc]a|vend|campanha|convite|inscri/i;
|
|
48
52
|
|
|
49
53
|
const normal = (e) => {
|
package/lib/estudio/gerativo.js
CHANGED
|
@@ -265,7 +265,7 @@ function escolherVisual(roteiro = {}, { aleatorio = Math.random } = {}) {
|
|
|
265
265
|
roteiro É do assunto (uma palavra só não basta). UMA forma por vídeo —
|
|
266
266
|
é identidade, não sorteio por batida — ou 'nenhum', que a memória também gira. */
|
|
267
267
|
const forca = (ABSTRATO_DO_HUMOR[humor] || 0) * Math.min(1, n[humor] / 3);
|
|
268
|
-
const h1 = forca > 0 ? variedade.sortear([...HEROIS_OBJETO, ...HEROIS_CAMPO, 'nenhum'], 'heroi-gerativo', { aleatorio, adequacao: (h) => (h === 'nenhum' ? 1 - forca : forca * fitH(h)) }) : 'nenhum';
|
|
268
|
+
const h1 = forca > 0 ? variedade.sortear([...HEROIS_3D, ...HEROIS_OBJETO, ...HEROIS_CAMPO, 'nenhum'], 'heroi-gerativo', { aleatorio, adequacao: (h) => (h === 'nenhum' ? 1 - forca : HEROIS_3D.includes(h) ? forca * 1.3 : forca * fitH(h)) }) : 'nenhum';
|
|
269
269
|
out.herois = { favoritos: h1 === 'nenhum' ? [] : [h1] };
|
|
270
270
|
// 'produto' e 'marca' quem decide é o conteúdo (o 3D pedido, a marca), não o gosto do projeto.
|
|
271
271
|
const favC = [];
|
|
@@ -274,7 +274,10 @@ function escolherVisual(roteiro = {}, { aleatorio = Math.random } = {}) {
|
|
|
274
274
|
/* A MOLDURA (09/10): o quadro fixo do reel de referência — cantos, o assunto
|
|
275
275
|
no alto, a seção, o tempo embaixo — é identidade, mas em todo vídeo vira
|
|
276
276
|
vício. Sai do cardápio com memória: 'sem' pesa um pouco mais. */
|
|
277
|
-
|
|
277
|
+
/* (10/10) "Essa borda entrega que foi IA que fez" (Joel): os cantos, o
|
|
278
|
+
"01 · seção" e o tempo embaixo são a assinatura de vídeo gerado. Saiu
|
|
279
|
+
do sorteio: só entra quando o roteiro PEDE (moldura: cantos|completa). */
|
|
280
|
+
out.moldura = 'sem';
|
|
278
281
|
// O bokeh combina com luz de tela (tecnologia, energia, natureza); numa padaria, quase nunca.
|
|
279
282
|
const bokeh = ['tecnologia', 'energia', 'natureza'].includes(humor) ? 0.6 : 0.2;
|
|
280
283
|
out.ambiente = variedade.sortear(AMBIENTES, 'ambiente-gerativo', { aleatorio, adequacao: { limpo: 1, luz: 0.85, bokeh } });
|
|
@@ -298,6 +301,18 @@ function escolherVisual(roteiro = {}, { aleatorio = Math.random } = {}) {
|
|
|
298
301
|
O assunto decide quanto 3D: tecnologia e energia puxam os objetos (esfera,
|
|
299
302
|
toro, polígono, explosão); editorial e luxo, os campos. */
|
|
300
303
|
const HEROIS_OBJETO = ['explosao', 'poligono', 'esfera', 'toro'], HEROIS_CAMPO = ['truchet', 'aneis', 'grade', 'rastro'];
|
|
304
|
+
/* O 3D DE VERDADE (10/10, "quero um 3d bem presente", com o reel de
|
|
305
|
+
referência): three.js, perspectiva, luz — grande na tela, não um enfeite.
|
|
306
|
+
globo3d: a esfera de pontos e malha girando em profundidade; fita3d: o nó
|
|
307
|
+
que se torce, com material e luz de recorte; colunas3d: o campo de colunas
|
|
308
|
+
que a câmera sobrevoa, atrás do texto. (kit/tres.jsx, Heroi3D) */
|
|
309
|
+
const HEROIS_3D = ['globo3d', 'fita3d', 'colunas3d'];
|
|
310
|
+
const CAMPOS_3D = ['colunas3d'];
|
|
311
|
+
/* A FAMÍLIA de cada herói: dois heróis da mesma família seguidos são o
|
|
312
|
+
"mesmo desenho" para quem assiste (o anel de pontos com a forma no meio
|
|
313
|
+
saiu em 4 batidas seguidas no vídeo do Joel, 10/10). */
|
|
314
|
+
const FAMILIA_HEROI = { explosao: 'raio', poligono: 'orbita', aneis: 'orbita', esfera: 'malha', toro: 'malha', globo3d: 'malha',
|
|
315
|
+
fita3d: 'fita', colunas3d: 'campo3d', truchet: 'azulejo', grade: 'grade', rastro: 'rastro' };
|
|
301
316
|
const OBJETO3D_DO_HUMOR = { tecnologia: 1, energia: 1, natureza: 0.8, luxo: 0.6, editorial: 0.4 };
|
|
302
317
|
/* Quanto o assunto aceita forma abstrata (o resto: a tipografia e o ícone do conteúdo). */
|
|
303
318
|
const ABSTRATO_DO_HUMOR = { tecnologia: 1, energia: 0.7, natureza: 0.5, luxo: 0, editorial: 0 };
|
|
@@ -327,7 +342,7 @@ function escolhasValidas(e) {
|
|
|
327
342
|
texto: todas('textos').includes(e.texto) ? e.texto : null,
|
|
328
343
|
mono: todas('monos').includes(e.mono) ? e.mono : null,
|
|
329
344
|
genero: todas('generos').includes(e.genero) ? e.genero : null,
|
|
330
|
-
herois: (e.herois && Array.isArray(e.herois.favoritos) ? e.herois.favoritos : []).filter((h) => HEROIS_OBJETO.includes(h) || HEROIS_CAMPO.includes(h)),
|
|
345
|
+
herois: (e.herois && Array.isArray(e.herois.favoritos) ? e.herois.favoritos : []).filter((h) => HEROIS_OBJETO.includes(h) || HEROIS_CAMPO.includes(h) || HEROIS_3D.includes(h)),
|
|
331
346
|
composicoes: (e.composicoes && Array.isArray(e.composicoes.favoritas) ? e.composicoes.favoritas : []).filter((c) => COMPOSICOES.includes(c)),
|
|
332
347
|
icones: e.icones && ARRANJOS_ICONE.includes(e.icones.arranjo) ? {
|
|
333
348
|
arranjo: e.icones.arranjo,
|
|
@@ -570,6 +585,9 @@ function frasesDe(fala, palavras) {
|
|
|
570
585
|
|
|
571
586
|
// ── as cores ────────────────────────────────────────────────────────────
|
|
572
587
|
const luz = (h) => { const n = parseInt(String(h).slice(1), 16); return ((n >> 16 & 255) * 0.299 + (n >> 8 & 255) * 0.587 + (n & 255) * 0.114) / 255; };
|
|
588
|
+
/** A luminância relativa do WCAG (com o gama) e o contraste por ela. */
|
|
589
|
+
const lumWcag = (h) => { const n = parseInt(String(h).slice(1), 16); const c = [n >> 16 & 255, n >> 8 & 255, n & 255].map((v) => { v /= 255; return v <= 0.03928 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4); }); return 0.2126 * c[0] + 0.7152 * c[1] + 0.0722 * c[2]; };
|
|
590
|
+
const contrasteWcag = (a, b) => { const la = lumWcag(a) + 0.05, lb = lumWcag(b) + 0.05; return la > lb ? la / lb : lb / la; };
|
|
573
591
|
const contraste = (a, b) => { const la = luz(a) + 0.05, lb = luz(b) + 0.05; return la > lb ? la / lb : lb / la; };
|
|
574
592
|
const PALETAS = HUMORES.tecnologia.paletas;
|
|
575
593
|
|
|
@@ -999,6 +1017,8 @@ function partituraDe({ roteiro, largura = 1920, altura = 1080, tempos = [], icon
|
|
|
999
1017
|
const comp = nome === 'rajada' ? 'gigante' : nome === 'duelo' ? 'pilha' : nome;
|
|
1000
1018
|
let q = p;
|
|
1001
1019
|
if (comp === anterior || evita.includes(comp)) q = 0;
|
|
1020
|
+
// No máximo 2 vezes no vídeo (10/10: "cascata" saiu 3 vezes no vídeo do Joel).
|
|
1021
|
+
if ((usadas[comp] || 0) >= 2) q = 0;
|
|
1002
1022
|
if (recentes.slice(-3).includes(comp)) q *= 0.35;
|
|
1003
1023
|
q *= Math.pow(0.72, usadas[comp] || 0);
|
|
1004
1024
|
if (comp === 'parede' && (usadas.parede || 0) >= 1) q *= 0.25;
|
|
@@ -1033,6 +1053,8 @@ function partituraDe({ roteiro, largura = 1920, altura = 1080, tempos = [], icon
|
|
|
1033
1053
|
if (bi === alvo3d && !usadas.produto) nome = 'produto';
|
|
1034
1054
|
const ctx = { s, W, H, M, deitado, base, larguraUtil, tamRotulo, fontes, P, palavras: br.palavras || c.palavras || [], parte: br.parte, marca, roteiro, memoria };
|
|
1035
1055
|
if (nome === 'rajada' && br.ate - br.de < 1.6 * c.itens.length) nome = 'cascata';
|
|
1056
|
+
// A cascata que veio da rajada também respeita o teto de 2 (e nunca segue outra cascata).
|
|
1057
|
+
if (nome === 'cascata' && ((usadas.cascata || 0) >= 2 || anterior === 'cascata')) nome = anterior === 'pilha' ? 'palavras' : 'pilha';
|
|
1036
1058
|
if (nome === 'rajada') {
|
|
1037
1059
|
// Cada item vira a sua batida; o título da lista fica como rótulo.
|
|
1038
1060
|
const n = c.itens.length;
|
|
@@ -1075,6 +1097,45 @@ function partituraDe({ roteiro, largura = 1920, altura = 1080, tempos = [], icon
|
|
|
1075
1097
|
batidas.forEach((b) => { b.secao = secoes.idx[b.parte] || 0; b.campo = b.secao % 2 === 0 ? comeca : 2 - comeca; });
|
|
1076
1098
|
for (const b of batidas) { b.fundo = 'campo' + b.campo; b.cores = coresDoCampo(campos, b.campo, s, ident); }
|
|
1077
1099
|
|
|
1100
|
+
/* ── OS CAMPOS DE COR CHAPADA (10/10) ────────────────────────────────
|
|
1101
|
+
"O vídeo fica bege e grafite do começo ao fim" — o reel de referência
|
|
1102
|
+
troca o quadro INTEIRO para laranja, azul elétrico, lima. Os campos 3 e
|
|
1103
|
+
4 tinham saído em 09/10 porque entravam a esmo ("cores nada a ver uma
|
|
1104
|
+
com a outra"); voltam com regra: só DUAS cores fortes — o acento do
|
|
1105
|
+
vídeo e a ousada do mesmo sistema (campos[3]) —, em ~1 de cada 3,5
|
|
1106
|
+
batidas (pelo menos 2 num vídeo de 6+), nunca duas seguidas, nunca a
|
|
1107
|
+
primeira nem a marca. Tinta de contraste alto; o corte é seco (o fundo
|
|
1108
|
+
troca no quadro da batida, que o batida.js encosta na música). */
|
|
1109
|
+
// A segunda cor é a ousada do sistema MAIS LONGE no matiz do acento: duas laranjas lado a lado
|
|
1110
|
+
// (o terracota e o #FF4A1C, render real de 10/10) não fazem o contraste do reel (laranja × azul).
|
|
1111
|
+
const matiz = (h) => { const n = parseInt(String(h).slice(1), 16); const r = (n >> 16 & 255) / 255, g = (n >> 8 & 255) / 255, bb = (n & 255) / 255;
|
|
1112
|
+
const mx = Math.max(r, g, bb), mn = Math.min(r, g, bb), d = mx - mn; if (!d) return 0;
|
|
1113
|
+
const hh = mx === r ? ((g - bb) / d) % 6 : mx === g ? (bb - r) / d + 2 : (r - g) / d + 4; return (hh * 60 + 360) % 360; };
|
|
1114
|
+
const longe = (x) => { const d = Math.abs(matiz(x) - matiz(ident.acento)); return Math.min(d, 360 - d); };
|
|
1115
|
+
const ousada = [campos[3], campos[4]].filter(ehCor).sort((x, y) => longe(y) - longe(x))[0];
|
|
1116
|
+
const fortes = [ident.acento, ousada].filter((x, i, a) => ehCor(x) && a.indexOf(x) === i);
|
|
1117
|
+
const nCor = batidas.length >= 6 ? Math.max(2, Math.round(batidas.length / 3.5)) : batidas.length >= 4 ? 1 : 0;
|
|
1118
|
+
const candCor = batidas.map((b, i) => i).filter((i) => i > 0 && !['marca', 'produto'].includes(batidas[i].comp));
|
|
1119
|
+
const pesoCor = { gigante: 3, palavras: 2.5, contador: 2.5, pilha: 2, parede: 1.5, divisao: 1, cascata: 0.8, citacao: 0.8 };
|
|
1120
|
+
const comCor = [];
|
|
1121
|
+
for (const i of candCor.sort((x, y) => (pesoCor[batidas[y].comp] || 1) - (pesoCor[batidas[x].comp] || 1) || x - y)) {
|
|
1122
|
+
if (comCor.length >= nCor || !fortes.length) break;
|
|
1123
|
+
if (comCor.some((j) => Math.abs(j - i) < 2)) continue;
|
|
1124
|
+
comCor.push(i);
|
|
1125
|
+
}
|
|
1126
|
+
comCor.sort((x, y) => x - y).forEach((i, k) => {
|
|
1127
|
+
const b = batidas[i];
|
|
1128
|
+
const fundo = fortes[k % fortes.length], outra = fortes[(k + 1) % fortes.length];
|
|
1129
|
+
/* A tinta pelo contraste WCAG (luminância relativa, com o gama): a `luz`
|
|
1130
|
+
daqui acha o azul elétrico "médio" e punha texto PRETO nele — o olho
|
|
1131
|
+
lê muito melhor o branco. */
|
|
1132
|
+
const tinta = [...ident.chaos, '#0B0B0B', '#FAFAF7'].sort((x, y) => contrasteWcag(y, fundo) - contrasteWcag(x, fundo))[0];
|
|
1133
|
+
const acento = outra && outra !== fundo && contrasteWcag(outra, fundo) >= 2.6 ? outra : tinta;
|
|
1134
|
+
b.cores = { fundo, texto: tinta, fraco: misturarCor(tinta, fundo, 0.32), acento, contorno: misturarCor(tinta, fundo, 0.5) };
|
|
1135
|
+
b.campoCor = true;
|
|
1136
|
+
b.fundo = 'cor';
|
|
1137
|
+
});
|
|
1138
|
+
|
|
1078
1139
|
/* ── O HERÓI DE CADA BATIDA VEM DO CONTEÚDO (09/10): "é uma conversa sobre
|
|
1079
1140
|
pão e ele vai naquela bolinha" (Joel). Quem diz é o roteiro: parte.heroi
|
|
1080
1141
|
(ou parte.icone) — um ícone do Iconify ("mdi:bread-slice", o desenho
|
|
@@ -1084,7 +1145,7 @@ function partituraDe({ roteiro, largura = 1920, altura = 1080, tempos = [], icon
|
|
|
1084
1145
|
e a forma abstrata só no assunto abstrato, a escolhida do projeto, em
|
|
1085
1146
|
até 1 de cada 3 batidas. Nada serve: a tipografia carrega a batida. ── */
|
|
1086
1147
|
const pedidoDe = partes.map((p) => { const h = p.heroi != null ? p.heroi : p.icone; return typeof h === 'string' && h.trim() ? h.trim() : null; });
|
|
1087
|
-
const ABSTRATOS = [...HEROIS_OBJETO, ...HEROIS_CAMPO];
|
|
1148
|
+
const ABSTRATOS = [...HEROIS_OBJETO, ...HEROIS_CAMPO, ...HEROIS_3D];
|
|
1088
1149
|
const ICONES3D = new Set(Object.values(ICONE_DE));
|
|
1089
1150
|
const materialSorteado = s.um(['argila', 'verniz', 'metal']);
|
|
1090
1151
|
// O arranjo do projeto (escolherVisual); sem ele, o de antes: um lado só, ícones seguidos.
|
|
@@ -1119,6 +1180,14 @@ function partituraDe({ roteiro, largura = 1920, altura = 1080, tempos = [], icon
|
|
|
1119
1180
|
if (/^(nenhum|nenhuma|nada|none)$/i.test(pedido)) continue;
|
|
1120
1181
|
if (ABSTRATOS.includes(pedido)) { b.heroiPedido = pedido; continue; }
|
|
1121
1182
|
if (ICONES3D.has(pedido)) { porIcone(b, pedido); ultimoIcone = bi; continue; }
|
|
1183
|
+
/* Da BIBLIOTECA (colecao.js, 11/10): o ícone 3D renderizado do Fluent
|
|
1184
|
+
("fluent3d:hot beverage") ou a animação pronta do Noto ("noto:1f525").
|
|
1185
|
+
O arquivo já desceu (index.js); chega aqui como {png} ou {lottie}. */
|
|
1186
|
+
if (/^(fluent3d|noto):/i.test(pedido) && icones[pedido] && typeof icones[pedido] === 'object') {
|
|
1187
|
+
porIcone(b, pedido, { ...icones[pedido] });
|
|
1188
|
+
ultimoIcone = bi;
|
|
1189
|
+
continue;
|
|
1190
|
+
}
|
|
1122
1191
|
if (/^[a-z0-9-]+:[a-z0-9-]+$/i.test(pedido) && icones[pedido]) {
|
|
1123
1192
|
porIcone(b, pedido, { svg: svgLimpo(icones[pedido]), cor: b.cores.acento, cor2: b.cores.texto });
|
|
1124
1193
|
ultimoIcone = bi;
|
|
@@ -1135,24 +1204,100 @@ function partituraDe({ roteiro, largura = 1920, altura = 1080, tempos = [], icon
|
|
|
1135
1204
|
ultimoIcone = bi;
|
|
1136
1205
|
}
|
|
1137
1206
|
|
|
1138
|
-
|
|
1207
|
+
/* ── A FORMA ABSTRATA, BATIDA A BATIDA (10/10) ───────────────────────
|
|
1208
|
+
Era UMA forma por vídeo, repetida a cada duas batidas: o anel com a
|
|
1209
|
+
forma no meio saiu em 4 batidas seguidas e "as animações são muito
|
|
1210
|
+
iguais" (Joel). Agora cada batida que recebe forma tira a sua de um
|
|
1211
|
+
cardápio, com três regras:
|
|
1212
|
+
1. nunca a mesma FAMÍLIA (FAMILIA_HEROI) em duas batidas seguidas;
|
|
1213
|
+
2. cada forma no máximo 2 vezes no vídeo (uma repetição);
|
|
1214
|
+
3. no assunto que aceita (tecnologia, energia, natureza), pelo menos
|
|
1215
|
+
1 de cada 3 batidas é 3D DE VERDADE (HEROIS_3D) — grande, com
|
|
1216
|
+
perspectiva e luz, não o enfeite pequeno de antes.
|
|
1217
|
+
A forma pedida pelo roteiro (parte.heroi) continua valendo onde pediu. */
|
|
1139
1218
|
const OBJETOS = HEROIS_OBJETO;
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1219
|
+
/* O assunto aceita forma abstrata quando o humor é de tecnologia, energia
|
|
1220
|
+
ou natureza E o roteiro É do assunto (3 palavras do humor, como na
|
|
1221
|
+
escolha do projeto) — a padaria que fala de Pix não vira reel de tech. */
|
|
1222
|
+
const acertos = acertosDeHumor(roteiro)[humor] || 0;
|
|
1223
|
+
// E o projeto escolheu ter forma (escolherVisual, E.herois): sem essa escolha, o herói vem só do conteúdo.
|
|
1224
|
+
const aceita = (E.herois || []).length > 0 && (ABSTRATO_DO_HUMOR[humor] || 0) >= 0.5 && acertos >= 3;
|
|
1225
|
+
const nB = batidas.length;
|
|
1226
|
+
const usoH = {}, usoFam = {};
|
|
1227
|
+
let famAnterior = null, ultimoH = -9;
|
|
1228
|
+
// A parede de texto e a marca já cobrem o quadro: forma ali é ruído.
|
|
1229
|
+
const livreParaHeroi = (b) => !b.icone3d && !b.produto3d && !pedidoDe[b.parte] && b.comp !== 'marca' && b.comp !== 'parede';
|
|
1230
|
+
const elegiveis = aceita ? batidas.map((b, i) => (livreParaHeroi(b) ? i : -1)).filter((i) => i >= 0) : [];
|
|
1231
|
+
// Quantas batidas ganham forma: metade do vídeo (as outras ficam com a tipografia e o ícone).
|
|
1232
|
+
const quantas = Math.min(elegiveis.length, Math.ceil(nB / 2));
|
|
1233
|
+
const escolhidas = new Set();
|
|
1234
|
+
for (let k = 0; k < quantas; k++) escolhidas.add(elegiveis[Math.floor((k * elegiveis.length) / quantas)]);
|
|
1235
|
+
const meta3d = aceita ? Math.min(quantas, Math.ceil(nB / 3)) : 0;
|
|
1236
|
+
let n3d = 0, feitas = 0;
|
|
1237
|
+
const favoritos = new Set(E.herois || []);
|
|
1238
|
+
const sortearHeroi = (b, i, so3d) => {
|
|
1239
|
+
const lista = so3d ? HEROIS_3D : [...HEROIS_3D, ...HEROIS_OBJETO, 'truchet', 'aneis', 'rastro'];
|
|
1240
|
+
const w = {};
|
|
1241
|
+
const pode = (h) => w[h] > 0;
|
|
1242
|
+
for (const h of lista.concat([...favoritos].filter((f) => !lista.includes(f) && (!so3d || HEROIS_3D.includes(f))))) {
|
|
1243
|
+
if ((usoH[h] || 0) >= 2) continue;
|
|
1244
|
+
const fam = FAMILIA_HEROI[h];
|
|
1245
|
+
if (fam === famAnterior && i - ultimoH <= 2) continue;
|
|
1246
|
+
// Cada família uma vez no vídeo: a esfera plana depois do globo 3D lia como repetição.
|
|
1247
|
+
if ((usoFam[fam] || 0) >= 1) continue;
|
|
1248
|
+
// As formas planas que pedem o vazio ao lado não cabem na batida sem vazio.
|
|
1249
|
+
if (OBJETOS.includes(h) && ['gigante', 'parede', 'divisao'].includes(b.comp)) continue;
|
|
1250
|
+
// O campo 3D e a parede de texto brigam: as duas cobrem o quadro.
|
|
1251
|
+
if ((CAMPOS_3D.includes(h) || HEROIS_CAMPO.includes(h)) && b.comp === 'parede') continue;
|
|
1252
|
+
// O 3D que mora AO LADO do texto (globo, fita) precisa de um lado livre: a tese gigante,
|
|
1253
|
+
// o contraste e a citação ocupam a largura — ali ele não teria onde ficar sem cruzar a letra.
|
|
1254
|
+
if (HEROIS_3D.includes(h) && !CAMPOS_3D.includes(h) && ['gigante', 'divisao', 'citacao', 'contador'].includes(b.comp)) continue;
|
|
1255
|
+
let p = HEROIS_3D.includes(h) ? 1.6 : 1;
|
|
1256
|
+
if (favoritos.has(h)) p *= 2;
|
|
1257
|
+
p *= Math.pow(0.4, usoH[h] || 0);
|
|
1258
|
+
w[h] = p;
|
|
1259
|
+
}
|
|
1260
|
+
// A forma que o projeto escolheu é a identidade: entra na primeira batida em que cabe.
|
|
1261
|
+
const fav = [...favoritos].find((f) => !usoH[f] && pode(f));
|
|
1262
|
+
if (fav) return fav;
|
|
1263
|
+
// A batida pede 3D e a escolhida é plana: vem a versão 3D da mesma família (o toro vira o globo).
|
|
1264
|
+
if (so3d) {
|
|
1265
|
+
const irma = [...favoritos].map((f) => HEROIS_3D.find((h) => FAMILIA_HEROI[h] === FAMILIA_HEROI[f])).find((h) => h && pode(h));
|
|
1266
|
+
if (irma) return irma;
|
|
1267
|
+
}
|
|
1268
|
+
return s.pesado(w);
|
|
1269
|
+
};
|
|
1143
1270
|
batidas.forEach((b, i) => {
|
|
1144
1271
|
let h = b.heroiPedido || null;
|
|
1145
|
-
if (!h && favorito && !b.icone3d && !b.produto3d && !pedidoDe[b.parte] && nH < tetoH && i - ultimoH >= 2
|
|
1146
|
-
&& !(OBJETOS.includes(favorito) && ['gigante', 'parede', 'divisao'].includes(b.comp))) h = favorito;
|
|
1147
1272
|
delete b.heroiPedido;
|
|
1273
|
+
if (!h && escolhidas.has(i)) {
|
|
1274
|
+
const faltam3d = meta3d - n3d, restam = quantas - feitas;
|
|
1275
|
+
h = sortearHeroi(b, i, faltam3d > 0 && faltam3d >= restam) || sortearHeroi(b, i, false);
|
|
1276
|
+
feitas++;
|
|
1277
|
+
}
|
|
1148
1278
|
if (!h) return;
|
|
1149
|
-
|
|
1279
|
+
usoH[h] = (usoH[h] || 0) + 1;
|
|
1280
|
+
usoFam[FAMILIA_HEROI[h] || h] = (usoFam[FAMILIA_HEROI[h] || h] || 0) + 1;
|
|
1281
|
+
famAnterior = FAMILIA_HEROI[h] || h; ultimoH = i;
|
|
1282
|
+
const tres = HEROIS_3D.includes(h);
|
|
1283
|
+
if (tres) n3d++;
|
|
1150
1284
|
const comCor = b.acentos < REGRAS.acentos;
|
|
1151
1285
|
if (comCor) b.acentos += 1;
|
|
1152
|
-
b.heroi = { tipo: h, modo:
|
|
1153
|
-
|
|
1286
|
+
b.heroi = { tipo: h, modo: CAMPOS_3D.includes(h) ? 'campo' : tres ? 'objeto3d' : OBJETOS.includes(h) ? 'objeto' : 'campo',
|
|
1287
|
+
tres, semente: hash(b.id + h) % 9973,
|
|
1288
|
+
cor: comCor ? b.cores.acento : misturarCor(b.cores.texto, b.cores.fundo, 0.25), cor2: b.cores.texto, fundo: b.cores.fundo };
|
|
1154
1289
|
});
|
|
1155
1290
|
|
|
1291
|
+
/* O 3D COMO ASSUNTO (10/10, "uma coisa gigante por tela"): na batida com
|
|
1292
|
+
globo ou fita, o texto vai para a metade esquerda (no 9:16, para o alto)
|
|
1293
|
+
e a outra metade fica inteira para o 3D — que o kit faz do tamanho do
|
|
1294
|
+
vão (até ~60% da altura), sem nunca cruzar a letra. */
|
|
1295
|
+
for (const b of batidas) {
|
|
1296
|
+
if (!b.heroi || b.heroi.modo !== 'objeto3d' || !b.bloco || b.bloco.colunas || b.bloco.blocos) continue;
|
|
1297
|
+
if (deitado) b.bloco = { ...b.bloco, x: M, alinha: 'esq', largura: Math.min(b.bloco.largura, W * 0.46) };
|
|
1298
|
+
else b.bloco = { ...b.bloco, y: H * 0.3, largura: Math.min(b.bloco.largura, larguraUtil) };
|
|
1299
|
+
}
|
|
1300
|
+
|
|
1156
1301
|
// ── as passagens: como uma batida vira a outra ──────────────────────
|
|
1157
1302
|
let ultimaSaida = null, desdeCorte = 9;
|
|
1158
1303
|
const saidasRecentes = [];
|
|
@@ -1361,9 +1506,12 @@ function compor(comp, br, ctx) {
|
|
|
1361
1506
|
const fonte = s.chance(0.5) ? fontes.cinetica : fontes.display;
|
|
1362
1507
|
const eixos = { wght: Math.min(VARIAVEIS[fonte].eixos.wght[1], wTese) };
|
|
1363
1508
|
const op = { fonte, wght: eixos.wght, maiusc };
|
|
1364
|
-
|
|
1509
|
+
// A frase de 3+ palavras pode ir em 3 linhas no 16:9: cresce na altura em vez de encolher na largura.
|
|
1510
|
+
const nMax = deitado ? Math.min(3, Math.max(2, txt.split(/\s+/).length)) : Math.min(4, txt.split(/\s+/).length);
|
|
1365
1511
|
const alvo = deitado ? larguraUtil * 0.96 : larguraUtil;
|
|
1366
|
-
|
|
1512
|
+
/* UMA COISA GIGANTE POR TELA (10/10, comparado ao reel de referência: "o
|
|
1513
|
+
texto pequeno no meio do bege"). A tese gigante enche a largura. */
|
|
1514
|
+
const fit = caberEmLinhas(txt, alvo, nMax, (deitado ? 0.42 : 0.26) * H, op);
|
|
1367
1515
|
const alinha = deitado && s.chance(0.35) ? 'esq' : 'centro';
|
|
1368
1516
|
b.bloco = { x: alinha === 'esq' ? M : W / 2, y: H * vert(deitado ? [0.5, 0.52, 0.47] : [0.47, 0.5, 0.55]), alinha, vert: 'meio', largura: alvo, gap: 0.04 };
|
|
1369
1517
|
if (c.selo) linha(c.selo, 'rotulo', { fonte: fontes.mono, tamanho: tamRotulo, tracking: 0.16, maiusc: true, eixos: { wght: 500 } });
|
|
@@ -1384,11 +1532,11 @@ function compor(comp, br, ctx) {
|
|
|
1384
1532
|
}
|
|
1385
1533
|
case 'pilha': case 'produto': {
|
|
1386
1534
|
const noProduto = comp === 'produto';
|
|
1387
|
-
const lg = noProduto ? (deitado ? W * 0.42 : larguraUtil) : (deitado ? W * s.entre(0.
|
|
1535
|
+
const lg = noProduto ? (deitado ? W * 0.42 : larguraUtil) : (deitado ? W * s.entre(0.74, 0.84) : larguraUtil);
|
|
1388
1536
|
const principal = c.tipo === 'numero' ? c.valor : (c.titulo || c.nome || c.nao || c.sim || c.texto || '');
|
|
1389
1537
|
const nL = 3;
|
|
1390
1538
|
const op = { fonte: fontes.display, wght: wTese };
|
|
1391
|
-
const fit = caberEmLinhas(principal, lg, nL, (deitado ? 0.
|
|
1539
|
+
const fit = caberEmLinhas(principal, lg, nL, (deitado ? 0.23 : 0.115) * H * (noProduto ? 0.85 : 1), op);
|
|
1392
1540
|
const y = noProduto ? (deitado ? H * 0.52 : H * 0.72) : H * vert(deitado ? [0.42, 0.5, 0.58] : [0.44, 0.52, 0.6]);
|
|
1393
1541
|
b.bloco = { x: M, y, alinha: 'esq', vert: 'meio', largura: lg, gap: 0.16 };
|
|
1394
1542
|
const rot = c.selo || (c.tipo === 'cta' ? '' : '');
|
|
@@ -1426,9 +1574,9 @@ function compor(comp, br, ctx) {
|
|
|
1426
1574
|
case 'palavras': {
|
|
1427
1575
|
const txt = c.texto || c.titulo || '';
|
|
1428
1576
|
const alinha = s.chance(0.55) ? 'esq' : 'centro';
|
|
1429
|
-
const lg = deitado ? W * 0.
|
|
1577
|
+
const lg = deitado ? W * 0.86 : larguraUtil;
|
|
1430
1578
|
const op = { fonte: fontes.display, wght: 600 };
|
|
1431
|
-
const fit = caberEmLinhas(txt, lg, deitado ? 3 : 4, (deitado ? 0.
|
|
1579
|
+
const fit = caberEmLinhas(txt, lg, deitado ? 3 : 4, (deitado ? 0.18 : 0.1) * H, op);
|
|
1432
1580
|
b.bloco = { x: alinha === 'esq' ? M : W / 2, y: H * vert([0.48, 0.52]), alinha, vert: 'meio', largura: lg, gap: 0.1 };
|
|
1433
1581
|
// Sem destaque, a tese é a palavra mais longa que não é função.
|
|
1434
1582
|
if (!destaqueTk.length) {
|
|
@@ -1463,7 +1611,7 @@ function compor(comp, br, ctx) {
|
|
|
1463
1611
|
// Fonte larga (Unbounded) aperta a lista: os itens vão na fonte de texto.
|
|
1464
1612
|
const fonte = VARIAVEIS[fontes.display].largura > 1.1 ? fontes.texto : fontes.display;
|
|
1465
1613
|
const op = { fonte, wght: 560 };
|
|
1466
|
-
const maxT = (deitado ? 0.
|
|
1614
|
+
const maxT = (deitado ? 0.12 : 0.056) * H;
|
|
1467
1615
|
const nL = itens.length <= 3 ? 2 : 1;
|
|
1468
1616
|
const tam = Math.min(...itens.map((it) => caberEmLinhas((c.numerada ? '00 ' : '') + it, lg, nL, maxT, op).tamanho));
|
|
1469
1617
|
b.bloco = { x: M + 30 * base, y: H * vert(deitado ? [0.5, 0.52] : [0.5, 0.54]), alinha: 'esq', vert: 'meio', largura: lg, gap: 0.42 };
|
|
@@ -1483,8 +1631,8 @@ function compor(comp, br, ctx) {
|
|
|
1483
1631
|
case 'divisao': {
|
|
1484
1632
|
const lado = deitado ? (larguraUtil - M * 0.6) / 2 : larguraUtil;
|
|
1485
1633
|
const op = { fonte: fontes.display, wght: wTese };
|
|
1486
|
-
const fN = caberEmLinhas(c.nao, lado, deitado ? 3 : 2, (deitado ? 0.
|
|
1487
|
-
const fS = caberEmLinhas(c.sim, lado, deitado ? 3 : 3, (deitado ? 0.
|
|
1634
|
+
const fN = caberEmLinhas(c.nao, lado, deitado ? 3 : 2, (deitado ? 0.13 : 0.08) * H, { ...op, wght: 400 });
|
|
1635
|
+
const fS = caberEmLinhas(c.sim, lado, deitado ? 3 : 3, (deitado ? 0.17 : 0.1) * H, op);
|
|
1488
1636
|
if (deitado) {
|
|
1489
1637
|
b.bloco = { x: M, y: H * 0.5, alinha: 'esq', vert: 'meio', largura: lado, gap: 0.1, colunas: [M, M + lado + M * 0.6] };
|
|
1490
1638
|
} else {
|
|
@@ -1502,7 +1650,7 @@ function compor(comp, br, ctx) {
|
|
|
1502
1650
|
const fonte = fontes.serifa;
|
|
1503
1651
|
const lg = deitado ? W * 0.78 : larguraUtil;
|
|
1504
1652
|
const q = String(c.texto || '').replace(/^["“]+|["”]+$/g, '');
|
|
1505
|
-
const fit = caberEmLinhas(q, lg, deitado ? 4 : 5, (deitado ? 0.
|
|
1653
|
+
const fit = caberEmLinhas(q, lg, deitado ? 4 : 5, (deitado ? 0.15 : 0.08) * H, { fonte, wght: 420 });
|
|
1506
1654
|
b.bloco = { x: M, y: H * vert([0.48, 0.52]), alinha: 'esq', vert: 'meio', largura: lg, gap: 0.16 };
|
|
1507
1655
|
linha('“', 'aspas', { fonte, tamanho: fit.tamanho * 1.6, eixos: { wght: 800 }, cor: 'acento' });
|
|
1508
1656
|
fit.linhas.forEach((t) => { const l = linha(t, 'apoio', { fonte, tamanho: fit.tamanho, eixos: { wght: 420, ...(VARIAVEIS[fonte].eixos.SOFT ? { SOFT: 100, WONK: 1 } : {}) } }); l.palavras.forEach((p) => { if (p.papel === 'tese') { p.wght = 700; } }); });
|
|
@@ -1516,7 +1664,7 @@ function compor(comp, br, ctx) {
|
|
|
1516
1664
|
const nome = c.nome || c.titulo || (ctx.marca.nome || '');
|
|
1517
1665
|
const fonte = fontes.display;
|
|
1518
1666
|
const lg = deitado ? W * 0.7 : larguraUtil * 0.9;
|
|
1519
|
-
const tam = tamanhoQueCabe(nome, lg, (deitado ? 0.
|
|
1667
|
+
const tam = tamanhoQueCabe(nome, lg, (deitado ? 0.3 : 0.16) * H, { fonte, wght: 800 });
|
|
1520
1668
|
b.bloco = { x: W / 2 + tam * 0.3, y: H * 0.5, alinha: 'centro', vert: 'meio', largura: lg, gap: 0.2 };
|
|
1521
1669
|
linha(nome, 'tese', { fonte, tamanho: tam, eixos: { wght: Math.min(800, VARIAVEIS[fonte].eixos.wght[1]) }, comportamento: 'contorno' }).marca = true;
|
|
1522
1670
|
if (c.sub || c.link) linha(c.sub || c.link, 'rotulo', { fonte: fontes.mono, tamanho: tamRotulo, tracking: 0.2, maiusc: true, eixos: { wght: 400 } });
|
|
@@ -1527,7 +1675,7 @@ function compor(comp, br, ctx) {
|
|
|
1527
1675
|
const txt = c.titulo || c.nome || '';
|
|
1528
1676
|
const fonte = fontes.cinetica;
|
|
1529
1677
|
const maiusc = true;
|
|
1530
|
-
const tam = tamanhoQueCabe(txt, larguraUtil, (deitado ? 0.
|
|
1678
|
+
const tam = tamanhoQueCabe(txt, larguraUtil, (deitado ? 0.26 : 0.13) * H, { fonte, wght: 900, maiusc });
|
|
1531
1679
|
b.bloco = { x: W / 2, y: H * 0.5, alinha: 'centro', vert: 'meio', largura: larguraUtil, gap: 0.1 };
|
|
1532
1680
|
linha(txt, 'tese', { fonte, tamanho: tam, eixos: { wght: Math.min(900, VARIAVEIS[fonte].eixos.wght[1]) }, maiusc });
|
|
1533
1681
|
b.textura = { texto: (maiusc ? txt.toUpperCase() : txt), tamanho: tam, fonte, linhas: Math.ceil(H / (tam * 1.02)) + 3, velocidade: Math.round(s.entre(40, 90) * base) };
|
|
@@ -1578,8 +1726,12 @@ function compor(comp, br, ctx) {
|
|
|
1578
1726
|
componente mede e cresce o grupo principal até a largura do bloco,
|
|
1579
1727
|
com o teto vertical daqui (o respiro de 30–40% continua garantido). */
|
|
1580
1728
|
// A palavra-herói de ponta a ponta (o CLAUDE do reel): teto alto, a largura manda.
|
|
1581
|
-
|
|
1582
|
-
|
|
1729
|
+
/* (10/10) "Uma coisa gigante por tela": os tetos subiram — a frase curta
|
|
1730
|
+
chega a ~14–18% da altura em altura de maiúscula, a lista a ~9%. Era o
|
|
1731
|
+
teto daqui (0,12 × 0,72 da altura) que deixava "Entregue a próxima
|
|
1732
|
+
tarefa" pequena no meio do bege, não o tamanho que a composição pedia. */
|
|
1733
|
+
const tetoV = { gigante: deitado ? 0.5 : 0.28, marca: deitado ? 0.34 : 0.18, parede: deitado ? 0.3 : 0.15, contador: deitado ? 0.55 : 0.25,
|
|
1734
|
+
pilha: deitado ? 0.3 : 0.15, produto: deitado ? 0.16 : 0.09, palavras: deitado ? 0.22 : 0.12, cascata: deitado ? 0.14 : 0.07, divisao: deitado ? 0.18 : 0.1, citacao: deitado ? 0.16 : 0.09 }[b.comp] || 0.12;
|
|
1583
1735
|
// A SANGRIA (a palavra de ponta a ponta) é um momento, não o padrão: até duas por vídeo, só em palavra curta.
|
|
1584
1736
|
const memS = ctx.memoria || {};
|
|
1585
1737
|
if (['gigante', 'parede'].includes(b.comp) && (memS.cheios || 0) < 2 && b.linhas.filter((l) => l.papel === 'tese').length <= 2
|
|
@@ -1591,7 +1743,7 @@ function compor(comp, br, ctx) {
|
|
|
1591
1743
|
if (!enche(l)) continue;
|
|
1592
1744
|
l.encher = l.papel === 'item' ? 'item' : 'principal';
|
|
1593
1745
|
// O respiro do guia: fora dos (no máximo dois) momentos de sangria, o bloco usa ~55% da altura e a tese não encosta em nada.
|
|
1594
|
-
l.max = Math.round(b.cheio ? Math.min(tetoV * H, (H * 0.
|
|
1746
|
+
l.max = Math.round(b.cheio ? Math.min(tetoV * H, (H * 0.7) / (nEnche * 1.05)) : Math.min(tetoV * H * 0.9, (H * 0.62) / (nEnche * 1.05)));
|
|
1595
1747
|
}
|
|
1596
1748
|
// ── o tempo de cada linha e palavra: quando a voz diz ────────────────
|
|
1597
1749
|
tempoDaBatida(b, palavras, ctx);
|
|
@@ -1709,5 +1861,5 @@ function contarAcentos(b) {
|
|
|
1709
1861
|
|
|
1710
1862
|
module.exports = {
|
|
1711
1863
|
montarGerativo, partituraDe, sonsDoVideo, musicaDe, desenharSom, humorDe, escolherVisual, MOLDURAS, AMBIENTES, ACENTOS_JEITO, ARRANJOS_ICONE, RITMOS_ICONE, MATERIAIS_ICONE, corGenerica, BANIDAS, HUMORES, REGRAS, VARIAVEIS, COMPOSICOES, COMPORTAMENTOS, SAIDAS, ACENTOS, FPS,
|
|
1712
|
-
especEixos, sorteador, hash, larguraEm, conteudoDe, casar, HEROIS_OBJETO, HEROIS_CAMPO,
|
|
1864
|
+
especEixos, sorteador, hash, larguraEm, conteudoDe, casar, HEROIS_OBJETO, HEROIS_CAMPO, HEROIS_3D, FAMILIA_HEROI,
|
|
1713
1865
|
};
|