CINXE.COM
Review: Millie Bobby Brown commits to weak yet appealing ‘Damsel’ | Datebook
<!DOCTYPE html> <html lang="en-US"> <head> <meta charset="UTF-8"><script type="text/javascript">(window.NREUM||(NREUM={})).init={ajax:{deny_list:["bam.nr-data.net"]}};(window.NREUM||(NREUM={})).loader_config={licenseKey:"1f719b4b96",applicationID:"87586888"};;/*! For license information please see nr-loader-rum-1.283.2.min.js.LICENSE.txt */ (()=>{var e,t,r={122:(e,t,r)=>{"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),o=0===Object.keys(r).length?e:r;for(let a in o)if(void 0!==e[a])try{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])&&Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):"object"==typeof e[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},555:(e,t,r)=>{"use strict";r.d(t,{Vp:()=>c,fn:()=>s,x1:()=>u});var n=r(384),i=r(122);const o={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},a={};function s(e){try{const t=c(e);return!!t.licenseKey&&!!t.errorBeacon&&!!t.applicationID}catch(e){return!1}}function c(e){if(!e)throw new Error("All info objects require an agent identifier!");if(!a[e])throw new Error("Info for ".concat(e," was never set"));return a[e]}function u(e,t){if(!e)throw new Error("All info objects require an agent identifier!");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r&&(r.info=a[e])}},217:(e,t,r)=>{"use strict";r.d(t,{D0:()=>m,gD:()=>v,xN:()=>h});r(860).K7.genericEvents;const n="experimental.marks",i="experimental.measures",o="experimental.resources",a=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var s=r(614),c=r(944),u=r(384),l=r(122);const d="[data-nr-mask]",f=()=>{const e={feature_flags:[],experimental:{marks:!1,measures:!1,resources:!1},mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,autoStart:!0},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{get capture_marks(){return e.feature_flags.includes(n)||e.experimental.marks},set capture_marks(t){e.experimental.marks=t},get capture_measures(){return e.feature_flags.includes(i)||e.experimental.measures},set capture_measures(t){e.experimental.measures=t},capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(o)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:s.wk,inactiveMs:s.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inline_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){a(t)?e.mask_selector="".concat(t,",").concat(d):""===t||null===t?e.mask_selector=d:(0,c.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){a(t)?e.block_selector+=",".concat(t):""!==t&&(0,c.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,c.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},spa:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]}}},g={},p="All configuration objects require an agent identifier!";function m(e){if(!e)throw new Error(p);if(!g[e])throw new Error("Configuration for ".concat(e," was never set"));return g[e]}function h(e,t){if(!e)throw new Error(p);g[e]=(0,l.a)(t,f());const r=(0,u.nY)(e);r&&(r.init=g[e])}function v(e,t){if(!e)throw new Error(p);var r=m(e);if(r){for(var n=t.split("."),i=0;i<n.length-1;i++)if("object"!=typeof(r=r[n[i]]))return;r=r[n[n.length-1]]}return r}},371:(e,t,r)=>{"use strict";r.d(t,{V:()=>f,f:()=>d});var n=r(122),i=r(384),o=r(154),a=r(324);let s=0;const c={buildEnv:a.F3,distMethod:a.Xs,version:a.xv,originTime:o.WN},u={customTransaction:void 0,disabled:!1,isolatedBacklog:!1,loaderType:void 0,maxBytes:3e4,onerror:void 0,ptid:void 0,releaseIds:{},appMetadata:{},session:void 0,denyList:void 0,timeKeeper:void 0,obfuscator:void 0,harvester:void 0},l={};function d(e){if(!e)throw new Error("All runtime objects require an agent identifier!");if(!l[e])throw new Error("Runtime for ".concat(e," was never set"));return l[e]}function f(e,t){if(!e)throw new Error("All runtime objects require an agent identifier!");l[e]={...(0,n.a)(t,u),...c},Object.hasOwnProperty.call(l[e],"harvestCount")||Object.defineProperty(l[e],"harvestCount",{get:()=>++s});const r=(0,i.nY)(e);r&&(r.runtime=l[e])}},324:(e,t,r)=>{"use strict";r.d(t,{F3:()=>i,Xs:()=>o,xv:()=>n});const n="1.283.2",i="PROD",o="CDN"},154:(e,t,r)=>{"use strict";r.d(t,{OF:()=>c,RI:()=>i,WN:()=>l,bv:()=>o,gm:()=>a,mw:()=>s,sb:()=>u});var n=r(863);const i="undefined"!=typeof window&&!!window.document,o="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),a=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),s=Boolean("hidden"===a?.document?.visibilityState),c=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),u=c&&"undefined"==typeof SharedWorker,l=((()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);Array.isArray(e)&&e.length>=2&&e[1]})(),Date.now()-(0,n.t)())},687:(e,t,r)=>{"use strict";r.d(t,{Ak:()=>c,Ze:()=>d,x3:()=>u});var n=r(836),i=r(606),o=r(860),a=r(646);const s={};function c(e,t){const r={staged:!1,priority:o.P3[t]||0};l(e),s[e].get(t)||s[e].set(t,r)}function u(e,t){e&&s[e]&&(s[e].get(t)&&s[e].delete(t),g(e,t,!1),s[e].size&&f(e))}function l(e){if(!e)throw new Error("agentIdentifier required");s[e]||(s[e]=new Map)}function d(e="",t="feature",r=!1){if(l(e),!e||!s[e].get(t)||r)return g(e,t);s[e].get(t).staged=!0,f(e)}function f(e){const t=Array.from(s[e]);t.every((([e,t])=>t.staged))&&(t.sort(((e,t)=>e[1].priority-t[1].priority)),t.forEach((([t])=>{s[e].delete(t),g(e,t)})))}function g(e,t,r=!0){const o=e?n.ee.get(e):n.ee,s=i.i.handlers;if(!o.aborted&&o.backlog&&s){if(r){const e=o.backlog[t],r=s[t];if(r){for(let t=0;e&&t<e.length;++t)p(e[t],r);Object.entries(r).forEach((([e,t])=>{Object.values(t||{}).forEach((t=>{t[0]?.on&&t[0]?.context()instanceof a.y&&t[0].on(e,t[1])}))}))}}o.isolatedBacklog||delete s[t],o.backlog[t]=null,o.emit("drain-"+t,[])}}function p(e,t){var r=e[1];Object.values(t[r]||{}).forEach((t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],o=e[2];n.apply(i,o)}}))}},836:(e,t,r)=>{"use strict";r.d(t,{P:()=>c,ee:()=>u});var n=r(384),i=r(990),o=r(371),a=r(646),s=r(607);const c="nr@context:".concat(s.W),u=function e(t,r){var n={},s={},l={},d=!1;try{d=16===r.length&&(0,o.f)(r).isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,o){!1!==o&&(o=!0);if(u.aborted&&!i)return;t&&o&&t.emit(e,r,n);for(var a=g(n),c=m(e),l=c.length,d=0;d<l;d++)c[d].apply(a,r);var p=v()[s[e]];p&&p.push([f,e,r,a]);return a},get:h,listeners:m,context:g,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach((([e,n])=>{s[n]=t,t in r||(r[t]=[])}))},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach((e=>{delete f.backlog[e]}))},isBuffering:function(e){return!!v()[s[e]]},debugId:r,backlog:d?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:d};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function g(e){return e&&e instanceof a.y?e:e?(0,i.I)(e,c,(()=>new a.y(c))):new a.y(c)}function p(e,t){n[e]=m(e).concat(t)}function m(e){return n[e]||[]}function h(t){return l[t]=l[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),l=(0,n.Zm)();l.ee||(l.ee=u)},646:(e,t,r)=>{"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},908:(e,t,r)=>{"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(836).ee.get("handle");function i(e,t,r,i,o){o?(o.buffer([e],i),o.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},606:(e,t,r)=>{"use strict";r.d(t,{i:()=>o});var n=r(908);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.d,i,e,t,r)}function a(e,t,r,i,o){o||(o="feature"),e||(e=n.d);var a=t[o]=t[o]||{};(a[r]=a[r]||[]).push([e,i])}},878:(e,t,r)=>{"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function o(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>o,jT:()=>n,sp:()=>i})},607:(e,t,r)=>{"use strict";r.d(t,{W:()=>n});const n=(0,r(566).bz)()},566:(e,t,r)=>{"use strict";r.d(t,{LA:()=>s,bz:()=>a});var n=r(154);const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function o(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),i.split("").map((e=>"x"===e?o(t,r++).toString(16):"y"===e?(3&o()|8).toString(16):e)).join("")}function s(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,i=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var s=0;s<e;s++)a.push(o(r,i++).toString(16));return a.join("")}},614:(e,t,r)=>{"use strict";r.d(t,{BB:()=>a,H3:()=>n,g:()=>u,iL:()=>c,tS:()=>s,uh:()=>i,wk:()=>o});const n="NRBA",i="SESSION",o=144e5,a=18e5,s={STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},c={SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},u={OFF:0,FULL:1,ERROR:2}},863:(e,t,r)=>{"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},944:(e,t,r)=>{"use strict";function n(e,t){"function"==typeof console.debug&&console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t)}r.d(t,{R:()=>n})},284:(e,t,r)=>{"use strict";r.d(t,{t:()=>c,B:()=>s});var n=r(836),i=r(154);const o="newrelic";const a=new Set,s={};function c(e,t){const r=n.ee.get(t);s[t]??={},e&&"object"==typeof e&&(a.has(t)||(r.emit("rumresp",[e]),s[t]=e,a.add(t),function(e={}){try{i.gm.dispatchEvent(new CustomEvent(o,{detail:e}))}catch(e){}}({loaded:!0})))}},990:(e,t,r)=>{"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},389:(e,t,r)=>{"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout((()=>{i=clearTimeout(i)}),t)),n||(clearTimeout(i),i=setTimeout((()=>{e.apply(this,r)}),t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},289:(e,t,r)=>{"use strict";r.d(t,{GG:()=>o,sB:()=>a});var n=r(878);function i(){return"undefined"==typeof document||"complete"===document.readyState}function o(e,t){if(i())return e();(0,n.sp)("load",e,t)}function a(e){if(i())return e();(0,n.DD)("DOMContentLoaded",e)}},384:(e,t,r)=>{"use strict";r.d(t,{NT:()=>o,US:()=>l,Zm:()=>a,bQ:()=>c,dV:()=>s,nY:()=>u,pV:()=>d});var n=r(154),i=r(863);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function a(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function s(){let e=a();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket}),e}function c(e,t){let r=a();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t}function u(e){let t=a();return t.initializedAgents?.[e]}function l(e,t){a()[e]=t}function d(){return function(){let e=a();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=a();const t=e.init||{};e.init={...t}}(),s(),function(){let e=a();const t=e.loader_config||{};e.loader_config={...t}}(),a()}},843:(e,t,r)=>{"use strict";r.d(t,{u:()=>i});var n=r(878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",(function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)}),r,i)}},434:(e,t,r)=>{"use strict";r.d(t,{Jt:()=>o,YM:()=>c});var n=r(836),i=r(607);const o="nr@original:".concat(i.W);var a=Object.prototype.hasOwnProperty,s=!1;function c(e,t){return e||(e=n.ee),r.inPlace=function(e,t,n,i,o){n||(n="");const a="-"===n.charAt(0);for(let s=0;s<t.length;s++){const c=t[s],u=e[c];l(u)||(e[c]=r(u,a?c+n:n,i,c,o))}},r.flag=o,r;function r(t,r,n,s,c){return l(t)?t:(r||(r=""),nrWrapper[o]=t,function(e,t,r){if(Object.defineProperty&&Object.keys)try{return Object.keys(e).forEach((function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})})),t}catch(e){u([e],r)}for(var n in e)a.call(e,n)&&(t[n]=e[n])}(t,nrWrapper,e),nrWrapper);function nrWrapper(){var o,a,l,d;try{a=this,o=[...arguments],l="function"==typeof n?n(o,a):n||{}}catch(t){u([t,"",[o,a,s],l],e)}i(r+"start",[o,a,s],l,c);try{return d=t.apply(a,o)}catch(e){throw i(r+"err",[o,a,e],l,c),e}finally{i(r+"end",[o,a,d],l,c)}}}function i(r,n,i,o){if(!s||t){var a=s;s=!0;try{e.emit(r,n,i,t,o)}catch(t){u([t,r,n,i],e)}s=a}}}function u(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function l(e){return!(e&&"function"==typeof e&&e.apply&&!e[o])}},993:(e,t,r)=>{"use strict";r.d(t,{A$:()=>o,ET:()=>a,p_:()=>i});var n=r(860);const i={ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"},o={OFF:0,ERROR:1,WARN:2,INFO:3,DEBUG:4,TRACE:5},a="log";n.K7.logging},773:(e,t,r)=>{"use strict";r.d(t,{z_:()=>o,XG:()=>s,TZ:()=>n,rs:()=>i,xV:()=>a});r(154),r(566),r(384);const n=r(860).K7.metrics,i="sm",o="cm",a="storeSupportabilityMetrics",s="storeEventMetrics"},630:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewEvent},782:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewTiming},344:(e,t,r)=>{"use strict";r.d(t,{G4:()=>i});var n=r(614);r(860).K7.sessionReplay;const i={RECORD:"recordReplay",PAUSE:"pauseReplay",REPLAY_RUNNING:"replayRunning",ERROR_DURING_REPLAY:"errorDuringReplay"};n.g.ERROR,n.g.FULL,n.g.OFF},234:(e,t,r)=>{"use strict";r.d(t,{W:()=>o});var n=r(836),i=r(687);class o{constructor(e,t){this.agentIdentifier=e,this.ee=n.ee.get(e),this.featureName=t,this.blocked=!1}deregisterDrain(){(0,i.x3)(this.agentIdentifier,this.featureName)}}},603:(e,t,r)=>{"use strict";r.d(t,{j:()=>K});var n=r(860),i=r(555),o=r(371),a=r(908),s=r(836),c=r(687),u=r(289),l=r(154),d=r(944),f=r(773),g=r(384),p=r(344);const m=["setErrorHandler","finished","addToTrace","addRelease","recordCustomEvent","addPageAction","setCurrentRouteName","setPageViewName","setCustomAttribute","interaction","noticeError","setUserId","setApplicationVersion","start",p.G4.RECORD,p.G4.PAUSE,"log","wrapLogger"],h=["setErrorHandler","finished","addToTrace","addRelease"];var v=r(863),b=r(614),y=r(993);var w=r(646),R=r(434);const A=new Map;function E(e,t,r,n){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,d.R)(29);const i=function(e){return(e||s.ee).get("logger")}(e),o=(0,R.YM)(i),a=new w.y(s.P);a.level=n.level,a.customAttributes=n.customAttributes;const c=t[r]?.[R.Jt]||t[r];return A.set(c,a),o.inPlace(t,[r],"wrap-logger-",(()=>A.get(c))),i}function _(){const e=(0,g.pV)();m.forEach((t=>{e[t]=(...r)=>function(t,...r){let n=[];return Object.values(e.initializedAgents).forEach((e=>{e&&e.api?e.exposed&&e.api[t]&&n.push(e.api[t](...r)):(0,d.R)(38,t)})),n.length>1?n:n[0]}(t,...r)}))}const x={};function N(e,t,g=!1){t||(0,c.Ak)(e,"api");const m={};var w=s.ee.get(e),R=w.get("tracer");x[e]=b.g.OFF,w.on(p.G4.REPLAY_RUNNING,(t=>{x[e]=t}));var A="api-",_=A+"ixn-";function N(t,r,n,o){const a=(0,i.Vp)(e);return null===r?delete a.jsAttributes[t]:(0,i.x1)(e,{...a,jsAttributes:{...a.jsAttributes,[t]:r}}),j(A,n,!0,o||null===r?"session":void 0)(t,r)}function k(){}m.log=function(e,{customAttributes:t={},level:r=y.p_.INFO}={}){(0,a.p)(f.xV,["API/log/called"],void 0,n.K7.metrics,w),function(e,t,r={},i=y.p_.INFO){(0,a.p)(f.xV,["API/logging/".concat(i.toLowerCase(),"/called")],void 0,n.K7.metrics,e),(0,a.p)(y.ET,[(0,v.t)(),t,r,i],void 0,n.K7.logging,e)}(w,e,t,r)},m.wrapLogger=(e,t,{customAttributes:r={},level:i=y.p_.INFO}={})=>{(0,a.p)(f.xV,["API/wrapLogger/called"],void 0,n.K7.metrics,w),E(w,e,t,{customAttributes:r,level:i})},h.forEach((e=>{m[e]=j(A,e,!0,"api")})),m.addPageAction=j(A,"addPageAction",!0,n.K7.genericEvents),m.recordCustomEvent=j(A,"recordCustomEvent",!0,n.K7.genericEvents),m.setPageViewName=function(t,r){if("string"==typeof t)return"/"!==t.charAt(0)&&(t="/"+t),(0,o.f)(e).customTransaction=(r||"http://custom.transaction")+t,j(A,"setPageViewName",!0)()},m.setCustomAttribute=function(e,t,r=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof t)||null===t)return N(e,t,"setCustomAttribute",r);(0,d.R)(40,typeof t)}else(0,d.R)(39,typeof e)},m.setUserId=function(e){if("string"==typeof e||null===e)return N("enduser.id",e,"setUserId",!0);(0,d.R)(41,typeof e)},m.setApplicationVersion=function(e){if("string"==typeof e||null===e)return N("application.version",e,"setApplicationVersion",!1);(0,d.R)(42,typeof e)},m.start=()=>{try{(0,a.p)(f.xV,["API/start/called"],void 0,n.K7.metrics,w),w.emit("manual-start-all")}catch(e){(0,d.R)(23,e)}},m[p.G4.RECORD]=function(){(0,a.p)(f.xV,["API/recordReplay/called"],void 0,n.K7.metrics,w),(0,a.p)(p.G4.RECORD,[],void 0,n.K7.sessionReplay,w)},m[p.G4.PAUSE]=function(){(0,a.p)(f.xV,["API/pauseReplay/called"],void 0,n.K7.metrics,w),(0,a.p)(p.G4.PAUSE,[],void 0,n.K7.sessionReplay,w)},m.interaction=function(e){return(new k).get("object"==typeof e?e:{})};const T=k.prototype={createTracer:function(e,t){var r={},i=this,o="function"==typeof t;return(0,a.p)(f.xV,["API/createTracer/called"],void 0,n.K7.metrics,w),g||(0,a.p)(_+"tracer",[(0,v.t)(),e,r],i,n.K7.spa,w),function(){if(R.emit((o?"":"no-")+"fn-start",[(0,v.t)(),i,o],r),o)try{return t.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw R.emit("fn-err",[arguments,this,t],r),t}finally{R.emit("fn-end",[(0,v.t)()],r)}}}};function j(e,t,r,i){return function(){return(0,a.p)(f.xV,["API/"+t+"/called"],void 0,n.K7.metrics,w),i&&(0,a.p)(e+t,[r?(0,v.t)():performance.now(),...arguments],r?null:this,i,w),r?void 0:this}}function I(){r.e(296).then(r.bind(r,778)).then((({setAPI:t})=>{t(e),(0,c.Ze)(e,"api")})).catch((e=>{(0,d.R)(27,e),w.abort()}))}return["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((e=>{T[e]=j(_,e,void 0,g?n.K7.softNav:n.K7.spa)})),m.setCurrentRouteName=g?j(_,"routeName",void 0,n.K7.softNav):j(A,"routeName",!0,n.K7.spa),m.noticeError=function(t,r){"string"==typeof t&&(t=new Error(t)),(0,a.p)(f.xV,["API/noticeError/called"],void 0,n.K7.metrics,w),(0,a.p)("err",[t,(0,v.t)(),!1,r,!!x[e]],void 0,n.K7.jserrors,w)},l.RI?(0,u.GG)((()=>I()),!0):I(),m}var k=r(217),T=r(122);const j={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0},I={};var O=r(284);const S=e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e};let P=!1;function K(e,t={},r,n){let{init:a,info:c,loader_config:u,runtime:d={},exposed:f=!0}=t;d.loaderType=r;const p=(0,g.pV)();c||(a=p.init,c=p.info,u=p.loader_config),(0,k.xN)(e.agentIdentifier,a||{}),function(e,t){if(!e)throw new Error("All loader-config objects require an agent identifier!");I[e]=(0,T.a)(t,j);const r=(0,g.nY)(e);r&&(r.loader_config=I[e])}(e.agentIdentifier,u||{}),c.jsAttributes??={},l.bv&&(c.jsAttributes.isWorker=!0),(0,i.x1)(e.agentIdentifier,c);const m=(0,k.D0)(e.agentIdentifier),h=[c.beacon,c.errorBeacon];P||(m.proxy.assets&&(S(m.proxy.assets),h.push(m.proxy.assets)),m.proxy.beacon&&h.push(m.proxy.beacon),_(),(0,g.US)("activatedFeatures",O.B),e.runSoftNavOverSpa&&=!0===m.soft_navigations.enabled&&m.feature_flags.includes("soft_nav")),d.denyList=[...m.ajax.deny_list||[],...m.ajax.block_internal?h:[]],d.ptid=e.agentIdentifier,(0,o.V)(e.agentIdentifier,d),e.ee=s.ee.get(e.agentIdentifier),void 0===e.api&&(e.api=N(e.agentIdentifier,n,e.runSoftNavOverSpa)),void 0===e.exposed&&(e.exposed=f),P=!0}},374:(e,t,r)=>{r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860:(e,t,r)=>{"use strict";r.d(t,{$J:()=>u,K7:()=>s,P3:()=>c,XX:()=>i,qY:()=>n,v4:()=>a});const n="events",i="jserrors",o="browser/blobs",a="rum",s={ajax:"ajax",genericEvents:"generic_events",jserrors:i,logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations",spa:"spa"},c={[s.pageViewEvent]:1,[s.pageViewTiming]:2,[s.metrics]:3,[s.jserrors]:4,[s.spa]:5,[s.ajax]:6,[s.sessionTrace]:7,[s.softNav]:8,[s.sessionReplay]:9,[s.logging]:10,[s.genericEvents]:11},u={[s.pageViewEvent]:a,[s.pageViewTiming]:n,[s.ajax]:n,[s.spa]:n,[s.softNav]:n,[s.metrics]:i,[s.jserrors]:i,[s.sessionTrace]:o,[s.sessionReplay]:o,[s.logging]:"browser/logs",[s.genericEvents]:"ins"}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}i.m=r,i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>"nr-rum-1.283.2.min.js",i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA-1.283.2.PROD:",i.l=(r,n,o,a)=>{if(e[r])e[r].push(n);else{var s,c;if(void 0!==o)for(var u=document.getElementsByTagName("script"),l=0;l<u.length;l++){var d=u[l];if(d.getAttribute("src")==r||d.getAttribute("data-webpack")==t+o){s=d;break}}if(!s){c=!0;var f={296:"sha512-2Y8GMAOGF658KnXzOZ/v+DlLch8TBFvV0tTNnOy9wrpvtDa1t5CdZMyX+LubTymBlzPp6NUjllBghMCZqXBPmg=="};(s=document.createElement("script")).charset="utf-8",s.timeout=120,i.nc&&s.setAttribute("nonce",i.nc),s.setAttribute("data-webpack",t+o),s.src=r,0!==s.src.indexOf(window.location.origin+"/")&&(s.crossOrigin="anonymous"),f[a]&&(s.integrity=f[a])}e[r]=[n];var g=(t,n)=>{s.onerror=s.onload=null,clearTimeout(p);var i=e[r];if(delete e[r],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(n))),t)return t(n)},p=setTimeout(g.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=g.bind(null,s.onerror),s.onload=g.bind(null,s.onload),c&&document.head.appendChild(s)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.p="https://js-agent.newrelic.com/",(()=>{var e={374:0,840:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,i)=>n=e[t]=[r,i]));r.push(n[2]=o);var a=i.p+i.u(t),s=new Error;i.l(a,(r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,n[1](s)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,o,[a,s,c]=r,u=0;if(a.some((t=>0!==e[t]))){for(n in s)i.o(s,n)&&(i.m[n]=s[n]);if(c)c(i)}for(t&&t(r);u<a.length;u++)o=a[u],i.o(e,o)&&e[o]&&e[o][0](),e[o]=0},r=self["webpackChunk:NRBA-1.283.2.PROD"]=self["webpackChunk:NRBA-1.283.2.PROD"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),(()=>{"use strict";i(374);var e=i(944),t=i(344),r=i(566);class n{agentIdentifier;constructor(){this.agentIdentifier=(0,r.LA)(16)}#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}addPageAction(e,t){return this.#e("addPageAction",e,t)}recordCustomEvent(e,t){return this.#e("recordCustomEvent",e,t)}setPageViewName(e,t){return this.#e("setPageViewName",e,t)}setCustomAttribute(e,t,r){return this.#e("setCustomAttribute",e,t,r)}noticeError(e,t){return this.#e("noticeError",e,t)}setUserId(e){return this.#e("setUserId",e)}setApplicationVersion(e){return this.#e("setApplicationVersion",e)}setErrorHandler(e){return this.#e("setErrorHandler",e)}addRelease(e,t){return this.#e("addRelease",e,t)}log(e,t){return this.#e("log",e,t)}}class o extends n{#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}start(){return this.#e("start")}finished(e){return this.#e("finished",e)}recordReplay(){return this.#e(t.G4.RECORD)}pauseReplay(){return this.#e(t.G4.PAUSE)}addToTrace(e){return this.#e("addToTrace",e)}setCurrentRouteName(e){return this.#e("setCurrentRouteName",e)}interaction(){return this.#e("interaction")}wrapLogger(e,t,r){return this.#e("wrapLogger",e,t,r)}}var a=i(860),s=i(217);const c=Object.values(a.K7);function u(e){const t={};return c.forEach((r=>{t[r]=function(e,t){return!0===(0,s.gD)(t,"".concat(e,".enabled"))}(r,e)})),t}var l=i(603);var d=i(687),f=i(234),g=i(289),p=i(154),m=i(384);const h=e=>p.RI&&!0===(0,s.gD)(e,"privacy.cookies_enabled");function v(e){return!!(0,m.dV)().o.MO&&h(e)&&!0===(0,s.gD)(e,"session_trace.enabled")}var b=i(389);class y extends f.W{constructor(e,t,r=!0){super(e.agentIdentifier,t),this.auto=r,this.abortHandler=void 0,this.featAggregate=void 0,this.onAggregateImported=void 0,!1===e.init[this.featureName].autoStart&&(this.auto=!1),this.auto?(0,d.Ak)(e.agentIdentifier,t):this.ee.on("manual-start-all",(0,b.J)((()=>{(0,d.Ak)(e.agentIdentifier,this.featureName),this.auto=!0,this.importAggregator(e)})))}importAggregator(t,r={}){if(this.featAggregate||!this.auto)return;let n;this.onAggregateImported=new Promise((e=>{n=e}));const o=async()=>{let o;try{if(h(this.agentIdentifier)){const{setupAgentSession:e}=await i.e(296).then(i.bind(i,861));o=e(t)}}catch(t){(0,e.R)(20,t),this.ee.emit("internal-error",[t]),this.featureName===a.K7.sessionReplay&&this.abortHandler?.()}try{if(!this.#t(this.featureName,o))return(0,d.Ze)(this.agentIdentifier,this.featureName),void n(!1);const{lazyFeatureLoader:e}=await i.e(296).then(i.bind(i,103)),{Aggregate:a}=await e(this.featureName,"aggregate");this.featAggregate=new a(t,r),t.runtime.harvester.initializedAggregates.push(this.featAggregate),n(!0)}catch(t){(0,e.R)(34,t),this.abortHandler?.(),(0,d.Ze)(this.agentIdentifier,this.featureName,!0),n(!1),this.ee&&this.ee.abort()}};p.RI?(0,g.GG)((()=>o()),!0):o()}#t(e,t){switch(e){case a.K7.sessionReplay:return v(this.agentIdentifier)&&!!t;case a.K7.sessionTrace:return!!t;default:return!0}}}var w=i(630);class R extends y{static featureName=w.T;constructor(e,t=!0){super(e,w.T,t),this.importAggregator(e)}}var A=i(908),E=i(843),_=i(878),x=i(782),N=i(863);class k extends y{static featureName=x.T;constructor(e,t=!0){super(e,x.T,t),p.RI&&((0,E.u)((()=>(0,A.p)("docHidden",[(0,N.t)()],void 0,x.T,this.ee)),!0),(0,_.sp)("pagehide",(()=>(0,A.p)("winPagehide",[(0,N.t)()],void 0,x.T,this.ee))),this.importAggregator(e))}}var T=i(773);class j extends y{static featureName=T.TZ;constructor(e,t=!0){super(e,T.TZ,t),this.importAggregator(e)}}new class extends o{constructor(t){super(),p.gm?(this.features={},(0,m.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(t.features||[]),this.desiredFeatures.add(R),this.runSoftNavOverSpa=[...this.desiredFeatures].some((e=>e.featureName===a.K7.softNav)),(0,l.j)(this,t,t.loaderType||"agent"),this.run()):(0,e.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}run(){try{const t=u(this.agentIdentifier),r=[...this.desiredFeatures];r.sort(((e,t)=>a.P3[e.featureName]-a.P3[t.featureName])),r.forEach((r=>{if(!t[r.featureName]&&r.featureName!==a.K7.pageViewEvent)return;if(this.runSoftNavOverSpa&&r.featureName===a.K7.spa)return;if(!this.runSoftNavOverSpa&&r.featureName===a.K7.softNav)return;const n=function(e){switch(e){case a.K7.ajax:return[a.K7.jserrors];case a.K7.sessionTrace:return[a.K7.ajax,a.K7.pageViewEvent];case a.K7.sessionReplay:return[a.K7.sessionTrace];case a.K7.pageViewTiming:return[a.K7.pageViewEvent];default:return[]}}(r.featureName).filter((e=>!(e in this.features)));n.length>0&&(0,e.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)}))}catch(t){(0,e.R)(22,t);for(const e in this.features)this.features[e].abortHandler?.();const r=(0,m.Zm)();delete r.initializedAgents[this.agentIdentifier]?.api,delete r.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return r.ee.get(this.agentIdentifier).abort(),!1}}}({features:[R,k,j],loaderType:"lite"})})()})();</script> <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"> <link rel="profile" href="http://gmpg.org/xfn/11"> <script id="hnpprivacy" src="https://www.sfchronicle.com/hdn/dynamic/hnpprivacy-min.js"></script> <title>Review: Millie Bobby Brown commits to weak yet appealing ‘Damsel’ | Datebook</title> <meta name='robots' content='max-image-preview:large' /> <script type="text/javascript"> wp_source = {"authorName":"Mick LaSalle","authorTitle":"","authorEmail":"","publishingSite":"datebook.sfchronicle","sourceSite":"","originalSourceSite":""}; wp_content = {"blogName":"Datebook | San Francisco Arts & Entertainment Guide","blogPath":"\/datebook\/","blogType":"staff","blogId":"2","title":"Review: Millie Bobby Brown commits to weak yet appealing \u2018Damsel\u2019","subtitle":"","objectId":3339892,"objectType":"post","displayTemplate":"Datebook 2019 San Francisco Chronicle","sectionPath":["entertainment",""],"wordCount":0,"keywords":[],"pubDate":"2024-03-06 15:28:18","lastModifiedDate":"2024-03-06 17:36:19","syndicationRights":""}; wp_href = {"pageUrl":"https:\/\/datebook.sfchronicle.com","canonicalUrl":"https:\/\/datebook.sfchronicle.com\/movies-tv\/mille-bobby-brown-damsel-18703629"}; wp_presentation = {"hasSlideshow":false,"hasSlideshowListView":false,"hasVideo":false,"hasInteractive":false}; var HDN = HDN || {}; if (!HDN.hasOwnProperty('dataLayer')){ HDN.dataLayer={}; } HDN.dataLayer.source = wp_source; HDN.dataLayer.content = wp_content; HDN.dataLayer.href = wp_href; HDN.dataLayer.href.pageUrlPath = window.location.pathname; HDN.dataLayer.href.pageUrlPathFolders = window.location.pathname.replace(/[A-Za-z0-9-_.]+$/, ''); HDN.dataLayer.href.pageUrlQueryParams = window.location.search.replace(/^\?/, ''); HDN.dataLayer.href.pageUrlHash = window.location.hash; HDN.dataLayer.paywall = HDN.dataLayer.paywall || {}; HDN.dataLayer.paywall.policy = "meter-no-paywall"; </script> <link rel='dns-prefetch' href='//www.sfchronicle.com' /> <link rel='dns-prefetch' href='//ak.sail-horizon.com' /> <link rel='dns-prefetch' href='//aps.hearstnp.com' /> <link rel='dns-prefetch' href='//s.w.org' /> <link rel="alternate" type="application/rss+xml" title="Datebook | San Francisco Arts & Entertainment Guide » Feed" href="https://datebook.sfchronicle.com/feed" /> <link rel="alternate" type="application/rss+xml" title="Datebook | San Francisco Arts & Entertainment Guide » Comments Feed" href="https://datebook.sfchronicle.com/comments/feed" /> <link rel="alternate" type="text/calendar" title="Datebook | San Francisco Arts & Entertainment Guide » iCal Feed" href="https://datebook.sfchronicle.com/events/?ical=1" /> <meta name="google-site-verification" content="yDr1XDQvCdDV9dS1sX3X3I_nbBCZYvbpPiyQkZkYevY" /> <meta name="msvalidate.01" content="9B7A93FAEA33B9F241FCC2C5E6860192" /> <meta name="description" content="Millie Bobby Brown does her best to make something out of “Damsel.” Although the fantasy film is heavy on dragons and light on plot, it proves to be an effective…" /> <meta property="og:title" content="Review: Millie Bobby Brown commits to weak yet appealing ‘Damsel’"> <meta property="og:description" content="Millie Bobby Brown does her best to make something out of “Damsel.” Although the fantasy film is heavy on dragons and light on plot, it proves to be an effective…"> <meta property="og:type" content="article"> <meta property="og:url" content="https://datebook.sfchronicle.com/movies-tv/mille-bobby-brown-damsel-18703629"> <meta property="og:site_name" content="Datebook | San Francisco Arts & Entertainment Guide"> <meta property="og:image" content="https://s3.amazonaws.com/sfc-datebook-wordpress/wp-content/uploads/sites/2/2024/03/featured_event3339892--700x500.jpg"> <meta property="og:image:width" content="700"> <meta property="og:image:height" content="500"> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:title" content="Review: Millie Bobby Brown commits to weak yet appealing ‘Damsel’"> <meta name="twitter:site" content="@sfchronicle"> <meta name="twitter:url" content="https://datebook.sfchronicle.com/movies-tv/mille-bobby-brown-damsel-18703629"> <meta name="twitter:image" content="https://s3.amazonaws.com/sfc-datebook-wordpress/wp-content/uploads/sites/2/2024/03/featured_event3339892--700x500.jpg"> <meta name="twitter:description" content="Millie Bobby Brown does her best to make something out of “Damsel.” Although the fantasy film is heavy on dragons and light on plot, it proves to be an effective…"> <meta property="sailthru.title" content="Review: Millie Bobby Brown commits to weak yet appealing ‘Damsel’" /> <meta name="sailthru.author" content="Mick LaSalle" /> <meta name="sailthru.date" content="2024-03-06 03:03:18" /> <meta name="sailthru.description" content="Millie Bobby Brown does her best to make something out of “Damsel.” Although the fantasy film is heavy on dragons and light on plot, it proves to be an effective…" /> <meta name="sailthru.tags" content="" /> <meta name="sailthru.image.full" content="https://s3.amazonaws.com/sfc-datebook-wordpress/wp-content/uploads/sites/2/2024/03/featured_event3339892--700x500.jpg" /> <meta name="sailthru_siteid" content="datebook | san francisco arts & entertainment guide" /> <script> var HDN = HDN || {}; HDN.ping = function(data) { var pingUrl = "https://p.ctpost.com/" + (data.type + "?" ) + (data.id ? "i=" + escape(data.id) + "&" : "" ) + (data.site ? "s=" + data.site + "&" : "" ) + (data.channel ? "c=" + data.channel + "&" : "" ) + (data.title ? "t=" + escape(data.title) + "&" : "" ) + (data.url ? "u=" + escape(data.url) + "&" : "" ) + "ts=" + Number(new Date()) new Image().src = pingUrl; }; HDN.ping( { "url": window.location.href, "id": "Datebook-2-3339892", "site": "premiumsfgate", "type": "blogEntry", "title": "Review: Millie Bobby Brown commits to weak yet appealing ‘Damsel’" }); </script> <script type="text/javascript"> window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/13.0.1\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/13.0.1\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/datebook.sfchronicle.com\/wp-includes\/js\/wp-emoji-release.min.js?ver=5.7.2"}}; !function(e,a,t){var n,r,o,i=a.createElement("canvas"),p=i.getContext&&i.getContext("2d");function s(e,t){var a=String.fromCharCode;p.clearRect(0,0,i.width,i.height),p.fillText(a.apply(this,e),0,0);e=i.toDataURL();return p.clearRect(0,0,i.width,i.height),p.fillText(a.apply(this,t),0,0),e===i.toDataURL()}function c(e){var t=a.createElement("script");t.src=e,t.defer=t.type="text/javascript",a.getElementsByTagName("head")[0].appendChild(t)}for(o=Array("flag","emoji"),t.supports={everything:!0,everythingExceptFlag:!0},r=0;r<o.length;r++)t.supports[o[r]]=function(e){if(!p||!p.fillText)return!1;switch(p.textBaseline="top",p.font="600 32px Arial",e){case"flag":return s([127987,65039,8205,9895,65039],[127987,65039,8203,9895,65039])?!1:!s([55356,56826,55356,56819],[55356,56826,8203,55356,56819])&&!s([55356,57332,56128,56423,56128,56418,56128,56421,56128,56430,56128,56423,56128,56447],[55356,57332,8203,56128,56423,8203,56128,56418,8203,56128,56421,8203,56128,56430,8203,56128,56423,8203,56128,56447]);case"emoji":return!s([55357,56424,8205,55356,57212],[55357,56424,8203,55356,57212])}return!1}(o[r]),t.supports.everything=t.supports.everything&&t.supports[o[r]],"flag"!==o[r]&&(t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&t.supports[o[r]]);t.supports.everythingExceptFlag=t.supports.everythingExceptFlag&&!t.supports.flag,t.DOMReady=!1,t.readyCallback=function(){t.DOMReady=!0},t.supports.everything||(n=function(){t.readyCallback()},a.addEventListener?(a.addEventListener("DOMContentLoaded",n,!1),e.addEventListener("load",n,!1)):(e.attachEvent("onload",n),a.attachEvent("onreadystatechange",function(){"complete"===a.readyState&&t.readyCallback()})),(n=t.source||{}).concatemoji?c(n.concatemoji):n.wpemoji&&n.twemoji&&(c(n.twemoji),c(n.wpemoji)))}(window,document,window._wpemojiSettings); </script> <style type="text/css"> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 .07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <link rel='stylesheet' id='wp-block-library-css' href='https://datebook.sfchronicle.com/wp-includes/css/dist/block-library/style.min.css?ver=5.7.2' type='text/css' media='all' /> <link rel='stylesheet' id='datebook-native-sponsorship-harrypotter-css-css' href='https://datebook.sfchronicle.com/wp-content/plugins/datebook-native-sponsorship-harry-potter/css/harrypotter.css?ver=1.0' type='text/css' media='all' /> <style id='datebook-native-sponsorship-harrypotter-css-inline-css' type='text/css'> @font-face { font-family: 'CrimsonText'; src: url('https://datebook.sfchronicle.com/wp-content/plugins/datebook-native-sponsorship-harry-potter/css/fonts/CrimsonText-Regular.ttf'); } @font-face { font-family: 'Trebuchet'; src: url('https://datebook.sfchronicle.com/wp-content/plugins/datebook-native-sponsorship-harry-potter/css/fonts/trebuc.ttf'); } @font-face { font-family: 'VerdanaBold'; src: url('https://datebook.sfchronicle.com/wp-content/plugins/datebook-native-sponsorship-harry-potter/css/fonts/Verdana-Bold.ttf'); } BODY.page-template-single-harry-potter #page .sponsored-slideshow .left-arrow{ background-image: url('https://datebook.sfchronicle.com/wp-content/plugins/datebook-native-sponsorship-harry-potter/img/left-arrow.svg'); } BODY.page-template-single-harry-potter #page .sponsored-slideshow .right-arrow{ background-image: url('https://datebook.sfchronicle.com/wp-content/plugins/datebook-native-sponsorship-harry-potter/img/right-arrow.svg'); } BODY.home .countdown-container, BODY.archive .countdown-container { background-image: url(https://s3.amazonaws.com/sfc-datebook-wordpress/wp-content/uploads/sites/2/2019/10/hp_square.jpg); } BODY.page-template-search .countdown-container { background-image: url(https://s3.amazonaws.com/sfc-datebook-wordpress/wp-content/uploads/sites/2/2019/10/hp_square.jpg); } @media screen and (min-width: 600px) { BODY.page-template-search .countdown-container { background-image: url(https://s3.amazonaws.com/sfc-datebook-wordpress/wp-content/uploads/sites/2/2019/10/hp_wide.jpg); } } BODY.page-template-single-harry-potter .title-wrap{ background-image: url(https://s3.amazonaws.com/sfc-datebook-wordpress/wp-content/uploads/sites/2/2019/05/dumbledore_cropped.jpg); background-repeat:no-repeat; } BODY.page-template-single-harry-potter .countdown-container { background-image: url(https://s3.amazonaws.com/sfc-datebook-wordpress/wp-content/uploads/sites/2/2019/10/hp_square.jpg); } BODY.page-template-single-harry-potter .countdown-container.onsale { background-image: url(https://s3.amazonaws.com/sfc-datebook-wordpress/wp-content/uploads/sites/2/2019/10/hp_square.jpg); } BODY.page-template-single-harry-potter .title-wrap::after { content:'The Broadway Company of Harry Potter and the Cursed Child. Photo by Manuel Harlan.'; position:absolute; left:15px; bottom:15px; text-align:left; margin-right:15px; color:#fff; } /* BEGIN post recirc unit*/ /* END post recirc unit*/ </style> <link rel='stylesheet' id='sfc-countdown-unit-css-css' href='https://datebook.sfchronicle.com/wp-content/plugins/sfc-countdown-unit/css/sfc-countdown-unit.css?ver=1.0' type='text/css' media='all' /> <style id='sfc-countdown-unit-css-inline-css' type='text/css'> /*sfc countdown unit*/ BODY.home .countdown-container, BODY.archive .countdown-container { background-image: url(https://s3.amazonaws.com/sfc-datebook-wordpress/wp-content/uploads/sites/2/2021/09/CF-Countdown-680x454px-3.jpg); } BODY.page-template-search .countdown-container { background-image: url(https://s3.amazonaws.com/sfc-datebook-wordpress/wp-content/uploads/sites/2/2021/09/CF-Countdown-680x454px-3.jpg); } @media screen and (min-width: 600px) { BODY.page-template-search .countdown-container { background-image: url(https://s3.amazonaws.com/sfc-datebook-wordpress/wp-content/uploads/sites/2/2021/09/CF-Countdown-1956x400px-2.jpg); } } /* BEGIN post recirc unit*/ BODY.single-guide #page aside .countdown-container, BODY.single-post #page aside .countdown-container { background-image: url(https://s3.amazonaws.com/sfc-datebook-wordpress/wp-content/uploads/sites/2/2021/09/CF-Countdown-300x170px-3.jpg); padding-bottom:170px; } BODY.single-guide #page aside .countdown-container .countdown-unit, BODY.single-post #page aside .countdown-container .countdown-unit { bottom:27px; width: 100%; right: auto; } /* END post recirc unit*/ </style> <link rel='stylesheet' id='datebook-parent-style-css' href='https://datebook.sfchronicle.com/wp-content/themes/datebook-2019-base/style.css?ver=5.7.2' type='text/css' media='all' /> <style id='datebook-parent-style-inline-css' type='text/css'> @font-face{ font-family:'LittleMan'; src:url('https://datebook.sfchronicle.com/wp-content/themes/datebook-2019-base/assets/fonts/LittleMan.otf'); } </style> <link rel='stylesheet' id='datebook-style-css' href='https://datebook.sfchronicle.com/wp-content/themes/datebook-2019-sfc/style.css?ver=5.7.2-p25-20241030-0930' type='text/css' media='all' /> <script type='text/javascript' src='https://datebook.sfchronicle.com/wp-content/themes/datebook-2019-base/assets/js/libs/jquery.min.js?ver=2.0.s' id='jquery-js'></script> <script type='text/javascript' src='//ak.sail-horizon.com/spm/spm.v1.min.js' id='sailthru-js'></script> <script type='text/javascript' src='//aps.hearstnp.com/Scripts/loadAds.js' id='loadads-js'></script> <link rel="https://api.w.org/" href="https://datebook.sfchronicle.com/wp-json/" /><link rel="alternate" type="application/json" href="https://datebook.sfchronicle.com/wp-json/wp/v2/posts/3339892" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://datebook.sfchronicle.com/xmlrpc.php?rsd" /> <link rel="wlwmanifest" type="application/wlwmanifest+xml" href="https://datebook.sfchronicle.com/wp-includes/wlwmanifest.xml" /> <meta name="generator" content="WordPress 5.7.2" /> <link rel="canonical" href="https://datebook.sfchronicle.com/movies-tv/mille-bobby-brown-damsel-18703629" /> <link rel='shortlink' href='https://datebook.sfchronicle.com/?p=3339892' /> <link rel="alternate" type="application/json+oembed" href="https://datebook.sfchronicle.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fdatebook.sfchronicle.com%2Fmovies-tv%2Fmille-bobby-brown-damsel-18703629" /> <link rel="alternate" type="text/xml+oembed" href="https://datebook.sfchronicle.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fdatebook.sfchronicle.com%2Fmovies-tv%2Fmille-bobby-brown-damsel-18703629&format=xml" /> <script> window.searchAPIUrl="https://datebook.sfchronicle.com/wp-json/datebook/v1/search";</script> <meta name="tec-api-version" content="v1"><meta name="tec-api-origin" content="https://datebook.sfchronicle.com"><link rel="https://theeventscalendar.com/" href="https://datebook.sfchronicle.com/wp-json/tribe/events/v1/" /><link rel="amphtml" href="https://datebook.sfchronicle.com/movies-tv/mille-bobby-brown-damsel-18703629/amp"><link rel="icon" href="https://s3.amazonaws.com/sfc-datebook-wordpress/wp-content/uploads/sites/2/2018/06/cropped-favicon-32x32.png" sizes="32x32" /> <link rel="icon" href="https://s3.amazonaws.com/sfc-datebook-wordpress/wp-content/uploads/sites/2/2018/06/cropped-favicon-192x192.png" sizes="192x192" /> <link rel="apple-touch-icon" href="https://s3.amazonaws.com/sfc-datebook-wordpress/wp-content/uploads/sites/2/2018/06/cropped-favicon-180x180.png" /> <meta name="msapplication-TileImage" content="https://s3.amazonaws.com/sfc-datebook-wordpress/wp-content/uploads/sites/2/2018/06/cropped-favicon-270x270.png" /> <script>HDN.dataLayer.presentation = {};</script> <style> /*events disclaimer dec 28 2021 -tmetzger*/ .content-group.critics-picks.events-content ul:before { content: 'Events featured are subject to change due to the pandemic. Check venue or organization websites for updates.'; font-style: italic; margin-bottom: 10px; margin-top:-20px; display: block; } body.page-template-search .loading {margin: 70px auto 0;} body.page-template-search .content-group.events.show:before { content: 'Events featured are subject to change due to the pandemic. Check venue or organization websites for updates.'; font-style: italic; display: block; margin-bottom: 17px; font-size:12px; } </style> <script> //jan 28 2020 843 if(location.href.indexOf("/search") > -1){ //needs to be in search page before the nativo script //s.ntv.io/serve/load.js inits. var _prx = window._prx || []; _prx.push(["cfg.SetNoAutoStart"]); } </script> <script type="text/javascript" src="//s.ntv.io/serve/load.js" async></script> <script> var HP_NEWSLETTER_SAILTHRU_ID = "fca2a0390286f0e53120a668534d9529"; </script> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-P38VLD8M');</script> <!-- End Google Tag Manager --> </head> <body class="post-template-default single single-post postid-3339892 single-format-standard tribe-no-js"> <div id="page" class="site"> <header class="site-header" role="banner"> <div class="inner-content top-bar"> <div class="top-navigation"> <a href="https://www.sfchronicle.com" class="parent-site-logo"></a> <div id="o-wrapper" class="o-wrapper"> <div class="menu-icons"> <div id="menu-icons-button" class="menu-icons-button navTrigger"> <i class="icon-hamburger" aria-hidden="true"></i> </div> </div> </div> </div> <h1 class="logo"><a href="https://datebook.sfchronicle.com"></a></h1> <script type="text/javascript" src="//treg.hearstnp.com/treg.js"></script> <!-- DETAILS --> <div id="treg-and-subscription" class="treg-and-subscription hide" data-hdn-env="PROD"> <div class="container subscription" > <ul class="list-unstyled"> <li id="subscription" class="hide"> <a class ="btn" target="_blank" href="https://subscription.sfchronicle.com/checkout/439/883/?siteID=SFC&origin=button&ipid=datebook" >Subscribe</a> </li> <li id="e-edition" class="hide"> <a class="e-edition" target="_blank" href="https://www.sfchronicle.com/e-edition">e-edition</a> </li> </ul> </div> <div class="container treg" > <div class="row"> <div> <div class="banner"> <div class="signInBox"> <ul class="list-unstyled" > <li class="treg-is-gigya gigya_menu"> <div class="gya-title expandable treg-conditional treg-not-logged-in request"><span>Sign In</span></div> <div class="gya-title expandable treg-conditional treg-logged-in"><span></span></div> <!-- inline styles because this is an example --> <div class="gya-content expandable" style="margin-right: 78px;margin-top: 10px;"> <div class="treg-gya-login-widget"></div> </div> <!-- /.gya-content --> </li> </ul> <!-- EO: TREG WIDGET AND MENU--> </div> </div> <div style="clear:both;"></div> </div> </div> <div class="row"> <ul class="list-unstyled list-inline"></ul> </div> <div class="row"> <ul class="list-unstyled list-inline"></ul> </div> </div> </div> <script type="text/javascript"> //example of hooking into event system var treg = treg || {}; treg.cmd = treg.cmd || []; //Register for the session events... treg.cmd.push(function () { //onSessionNotFound treg.realm.events.register("treg.onSessionNotFound", function (parms) { //console.log("user not found"); document.querySelector("#treg-and-subscription").classList.remove("hide"); document.querySelector("li#subscription").classList.remove("hide"); document.querySelector("li#e-edition").classList.add("hide"); }); //onSessionFound treg.realm.events.register("treg.onSessionFound", function (parms) { //console.log({ "user found": treg.realm.core.identity }); document.querySelector("#treg-and-subscription").classList.remove("hide"); if(treg.realm.core.identity && treg.realm.core.identity.entitlementId){ document.querySelector("li#e-edition").classList.remove("hide"); document.querySelector("li#subscription").classList.add("hide"); } else{ document.querySelector("li#subscription").classList.remove("hide"); document.querySelector("li#e-edition").classList.add("hide"); } }); }); </script> <div class="search-box"> <form method="GET" action="https://datebook.sfchronicle.com/" role="search"> <div class="outline"> <input type="text" autocomplete="off" class="field" name="s" value="" placeholder="Search Events or Categories" /> <span class="search-icon"><i class="icon-search"></i><i class="icon-close hide"></i></span> </div> <input type="hidden" name="search_button" value="Search"/> </form> </div> </div> <div id="c-mask" class="c-mask"></div> <nav id="menu-nav" class="menu-nav"> <div class="menu-nav__header"> <h1 class="logo"><a href="https://datebook.sfchronicle.com"></a></h1> <button class="menu-nav__close"> <div class="ex2"></div> </button> </div> <div class="menu-nav__body"> <ul class="menu-nav__items"> <li class="c-menu__item search-box"> <form method="GET" action="https://datebook.sfchronicle.com/" role="search"> <div class="outline"> <input type="text" autocomplete="off" class="field" name="s" value="" placeholder="Search Events or Categories" /> <span class="search-icon"><i class="icon-search"></i><i class="icon-close hide"></i></span> </div> <input type="hidden" name="search_button" value="Search"/> </form> </li> <a target="_parent" class="c-menu__link menubuilder search" href="https://datebook.sfchronicle.com/search" alt="View all posts in Event Search"><span class="">Event Search</span></a><a target="_parent" class="c-menu__link menubuilder categorymovies-tv" href="https://datebook.sfchronicle.com/category/movies-tv" alt="View all posts in Movies & TV"><span class="">Movies & TV</span></a><a target="_parent" class="c-menu__link menubuilder categorymusic" href="https://datebook.sfchronicle.com/category/music" alt="View all posts in Music"><span class="">Music</span></a><a target="_parent" class="c-menu__link menubuilder categorytheater" href="https://datebook.sfchronicle.com/category/theater" alt="View all posts in Theater"><span class="">Theater</span></a><a target="_parent" class="c-menu__link menubuilder categorydance" href="https://datebook.sfchronicle.com/category/dance" alt="View all posts in Dance"><span class="">Dance</span></a><a target="_parent" class="c-menu__link menubuilder categoryart-exhibits" href="https://datebook.sfchronicle.com/category/art-exhibits" alt="View all posts in Art & Exhibits"><span class="">Art & Exhibits</span></a><a target="_parent" class="c-menu__link menubuilder categoryclassical" href="https://datebook.sfchronicle.com/category/classical" alt="View all posts in Classical"><span class="">Classical</span></a><a target="_parent" class="c-menu__link menubuilder categorybooks" href="https://datebook.sfchronicle.com/category/books" alt="View all posts in Books"><span class="">Books</span></a> <a class="c-menu__link categories " href="https://www.sfchronicle.com/terms_of_use/" alt="Terms of Use" target="_blank"><span>Terms of Use</span></a> <a class="c-menu__link categories " href="https://www.sfchronicle.com/privacy_policy/" alt="Privacy Notice" target="_blank"><span>Privacy Notice</span></a> <a class="c-menu__link categories " href="https://www.sfchronicle.com/mydata/" alt="Your Privacy Choices" target="_blank"><span>Your Privacy Choices</span></a> </ul> <div class="social-icons"> <h3>Follow Us</h3> <div class="icons"> <a class="fb-link" href="https://www.facebook.com/SFChronicleDatebook/" target="_blank"><i class="icon-facebook" aria-hidden="true"></i></a> <a class="twtr-link" href="https://twitter.com/sfc_datebook" target="_blank"><i class="icon-twitter" aria-hidden="true"></i></a> <a class="insta-link" href="https://www.instagram.com/sfchronicle_datebook/" target="_blank"><i class="icon-instagram" aria-hidden="true"></i></a> <a class="pinterest-link" href="https://www.pinterest.com/sfchronicle/" target="_blank"><i class="icon-pinterest" aria-hidden="true"></i></a> </div> </div> </div> </nav> <div class="navigation-content"> <div class="primary-navigation"> <div class="inner-content"> <a target="_parent" class="c-menu__link menubuilder search" href="https://datebook.sfchronicle.com/search" alt="View all posts in Event Search"><span class="">Event Search</span></a><a target="_parent" class="c-menu__link menubuilder categorymovies-tv" href="https://datebook.sfchronicle.com/category/movies-tv" alt="View all posts in Movies & TV"><span class="">Movies & TV</span></a><a target="_parent" class="c-menu__link menubuilder categorymusic" href="https://datebook.sfchronicle.com/category/music" alt="View all posts in Music"><span class="">Music</span></a><a target="_parent" class="c-menu__link menubuilder categorytheater" href="https://datebook.sfchronicle.com/category/theater" alt="View all posts in Theater"><span class="">Theater</span></a><a target="_parent" class="c-menu__link menubuilder categorydance" href="https://datebook.sfchronicle.com/category/dance" alt="View all posts in Dance"><span class="">Dance</span></a><a target="_parent" class="c-menu__link menubuilder categoryart-exhibits" href="https://datebook.sfchronicle.com/category/art-exhibits" alt="View all posts in Art & Exhibits"><span class="">Art & Exhibits</span></a><a target="_parent" class="c-menu__link menubuilder categoryclassical" href="https://datebook.sfchronicle.com/category/classical" alt="View all posts in Classical"><span class="">Classical</span></a><a target="_parent" class="c-menu__link menubuilder categorybooks" href="https://datebook.sfchronicle.com/category/books" alt="View all posts in Books"><span class="">Books</span></a> </div> </div> </div> <div class="shadow"></div> </header> <div id="content" class="site-content"><!-- displaying post cached-post-3339892 from db--> <div class="ad-wrapper leaderboard" ><div id="DTBK_AP951"> <script type="text/javascript">/*<![CDATA[*/hearstPlaceAd("DTBK_AP951");/*]]>*/</script></div></div><article id="post-3339892"> <header class="entry-header"> <div class="article-category-list"><a href="https://datebook.sfchronicle.com/category/movies-tv" rel="category tag">Movies & TV</a></div> <h1>Review: Millie Bobby Brown commits to weak yet appealing ‘Damsel’</h1> <h2>Millie Bobby Brown does her best to make something out of “Damsel.” Although the fantasy film is heavy on dragons and light on plot, it proves to be an effective vehicle for the young actress. </h2> <div class="byline-and-share-links"> <div class="byline"> <div class="author_image"style="background-image:url(https://s.hdnux.com/photos/20/36/16/4318101/7/square_medium.jpg)" ></div> <div class="byline-details"> <span class="author"> <a class="datebook_get_author_name_html" target = "_blank" href="https://www.sfchronicle.com/author/mick-lasalle/">Mick LaSalle</a> </span><span class="dateline">March 6, 2024</span><span class="dateline updated">Updated: March 6, 2024, 5:36 pm</span> </div> </div> <div class="share-links"> <div class="social"> <a id="facebook-icon" title="Share on Facebook" href="#" target="_blank" onclick="window.open('https://www.facebook.com/sharer/sharer.php?u=https://datebook.sfchronicle.com/movies-tv/mille-bobby-brown-damsel-18703629', 'facebook-share-dialog', 'width=626,height=436'); return false;"> <i class="icon-facebook"></i> </a> </div> <div class="social"> <a id="twitter-icon" title="Share on Twitter" target="_blank" href="https://twitter.com/intent/tweet?url=https://datebook.sfchronicle.com/movies-tv/mille-bobby-brown-damsel-18703629&text=Review: Millie Bobby Brown commits to weak yet appealing ‘Damsel’"> <i class="icon-twitter"></i> </a> </div> <div class="social"> <a id="pinterest-icon" title="Share on Pinterest" target="_blank" href="http://pinterest.com/pin/create/button/?url=https://datebook.sfchronicle.com/movies-tv/mille-bobby-brown-damsel-18703629&media=https://s3.amazonaws.com/sfc-datebook-wordpress/wp-content/uploads/sites/2/2024/03/featured_event3339892-.jpg&description=Review: Millie Bobby Brown commits to weak yet appealing ‘Damsel’"> <i class="icon-pinterest"></i> </a> </div> <div class="social"> <a id="reddit-icon" title="Share on Reddit" target="_blank" href="https://www.reddit.com/submit?url=https://datebook.sfchronicle.com/movies-tv/mille-bobby-brown-damsel-18703629&text=Review: Millie Bobby Brown commits to weak yet appealing ‘Damsel’"> <i class="icon-reddit"></i> </a> </div> <div class="social"> <a id="mail-icon" title="Share via email" href="mailto:?subject=Your friend has shared a Datebook | San Francisco Arts & Entertainment Guide link with you: Review: Millie Bobby Brown commits to weak yet appealing ‘Damsel’&body=Review: Millie Bobby Brown commits to weak yet appealing ‘Damsel’%0A%0Ahttps://datebook.sfchronicle.com/movies-tv/mille-bobby-brown-damsel-18703629%0A%0AThis message was sent via https://datebook.sfchronicle.com."> <i class="icon-mail" aria-hidden="true"></i> </a> </div> <div class="social comments"> <a id="comments-icon" title="Comments" href="#spotim-comments"> <i class="icon-comments" aria-hidden="true"></i> </a> </div> </div> </div> </header> <section class="post-body"> <div class="interior"> <!-- Begin WCM content--><div class="sfc-slideshow-container"><div class="sfc-slideshow-title"></div><div class="sfc-slideshow single-image"><div class="slideshow-image" data-current-slide="0" style="background-image: url('https://s.hdnux.com/photos/01/36/43/64/24788268/3/rawImage.jpg');"></div><div class="info"><div class="text"><p>Millie Bobby Brown confronts the underworld in “Damsel.”</p> Photo: Netflix</div></div></div></div><p>Despite its faults, there are two consistent sources of pleasure in “Damsel.” The first is that it starts off a fairy tale and turns into a monster movie, a kind of “Cinderella” meets “Beowulf.” That combination is so ridiculous and insane that the filmmakers really deserve to be congratulated.</p><p>The other source of mirth is how <a href="https://datebook.sfchronicle.com/movies-tv/review-godzilla-vs-kong-is-a-disappointment-its-even-a-little-depressing">Millie Bob by Brown</a> attacks the central role — “attack” really is the right word — with an intensity worthy of <a href="https://www.sfchronicle.com/movies/article/Movie-review-Revolutionary-Road-year-s-best-3178292.php">Kate Winslet</a> or <a href="https://datebook.sfchronicle.com/movies-tv/review-cate-blanchett-is-whats-right-and-wrong-in-richard-linklaters-bernadette">Cate Blanchett</a> going for another Oscar. When the dragon (yes, there’s a dragon) puts his huge claw on top of her, Brown is ready for it, channeling the collective pain and outrage of every person who ever got stepped on by a monster.</p><p>The humor here — unintentional, of course — comes from the clash between Brown’s ferocious commitment and the absolute unworthiness of what she’s committing to. Yet that commitment is appealing and has force behind it. Like a ballplayer running full-out to first base even though he knows he’s going to get thrown out, Brown is just doing what she’s supposed to be doing.</p><p>She plays Elodie, the princess of a kingdom from long ago and far away, whose father, the king (<a href="https://datebook.sfchronicle.com/movies-tv/guy-ritchie-theo-james-the-gentlemen-18703565">Ray Winstone)</a>, contracts for her to marry a prince. It’s a good deal on paper. Basically, Elodie’s kingdom is a dump, like one big medieval parking lot, if such a thing can be imagined. But the nearby kingdom is wealthy and opulent. So Elodie is definitely going to live well.</p><div class="sfc-slideshow-container"><div class="sfc-slideshow-title"></div><div class="sfc-slideshow single-image"><div class="slideshow-image" data-current-slide="0" style="background-image: url('https://s.hdnux.com/photos/01/36/43/64/24788269/4/rawImage.jpg');"></div><div class="info"><div class="text"><p>The queen of a wealthy kingdom, played by Robin Wright, causes trouble for a young princess in “Damsel.” </p> Photo: John Wilson/Netflix</div></div></div></div><p>What could go wrong? The prince (Nick Robinson) seems like a nice guy, and he isn’t bad looking, either. The only indication of trouble is that the queen, who is played by <a href="https://www.sfchronicle.com/movies/article/Let-s-see-I-should-be-mad-but-I-m-not-2618746.php">Robin Wright</a>, does a lot of smiling, but it’s the smile of someone who can’t stop sizing people up or measuring them for a coffin.</p><p>The young couple has a traditional wedding service, and that goes well. But then there’s a second ceremony, a welcoming of Elodie into the family, and that one doesn’t go well, not at all. One expects a certain social discomfort with these rituals, but no one expects them to end with a fire-breathing dragon chasing a princess. That’s a little extreme.</p><p>And from then on, that’s the gist of the whole movie, which is about little besides Brown fleeing a dragon or acting her heart out in front of a CGI screen. At least half the movie involves the princess’ struggle for survival, except it takes place against a fairy-tale background, so we’re not exactly worried about her.</p><div class="sfc-slideshow-container"><div class="sfc-slideshow-title"></div><div class="sfc-slideshow single-image"><div class="slideshow-image" data-current-slide="0" style="background-image: url('https://s.hdnux.com/photos/01/36/32/60/24751126/3/rawImage.jpg');"></div><div class="info"><div class="text"><p>Millie Bobby Brown as Elodie in “Damsel.”</p> Photo: Netflix/Courtesy of Netflix</div></div></div></div><p>The apportionment of time in “Damsel” seems out of balance. The movie could have used a little less of Brown cowering behind boulders as the flames get closer and a little more of her getting even with the people who put her in this predicament. Director Juan Carlos Fresnadillo certainly seems willing to go hardcore with the dragon sequences. He should have also lavished time and horror on the scenes of Elodie getting even.</p><p>Still, there’s one unalloyed good thing to be said for “Damsel”: It marks the end of Millie Bobby Brown’s apprenticeship. Her child actress years are over. She’s grown up and ready to star in movies that audiences can take as seriously as she does.</p><iframe src="https://www.youtube.com/embed/iM150ZWovZM?si=p2gKY0GH5fa2UtRW" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen=""></iframe><p class="cci_endnote_contact" title="CCI End Note Contact"> <em>Reach Mick LaSalle: mlasalle@sfchronicle.com</em></p><div onClick='this.classList.remove("factbox-hide")' class='factbox factbox-hide'><strong>More Information</strong><p><img style="padding-right: 25px; padding-left: 25px; width: auto;" src="https://s.hdnux.com/photos/01/31/34/73/23449285/3/rawImage.jpg" alt="1 star" align="left"><strong><span class="cci_factbox_leadin" title="CCI Factbox LeadIn"> “Damsel”: </span></strong>Fantasy adventure. Starring Millie Bobby Brown and Robin Wright. Directed by Juan Carlos Fresnadillo. (PG-13. 108 minutes.) Streaming on Netflix starting Friday, March 8. </p></div><!-- END WCM content--> <!-- Related event --> <!-- Related event --> <!-- Related Movie --> <!-- Related Movie --> <div class="share-links"> <div class="social"> <a id="facebook-icon" title="Share on Facebook" href="#" target="_blank" onclick="window.open('https://www.facebook.com/sharer/sharer.php?u=https://datebook.sfchronicle.com/movies-tv/mille-bobby-brown-damsel-18703629', 'facebook-share-dialog', 'width=626,height=436'); return false;"> <i class="icon-facebook"></i> </a> </div> <div class="social"> <a id="twitter-icon" title="Share on Twitter" target="_blank" href="https://twitter.com/intent/tweet?url=https://datebook.sfchronicle.com/movies-tv/mille-bobby-brown-damsel-18703629&text=Review: Millie Bobby Brown commits to weak yet appealing ‘Damsel’"> <i class="icon-twitter"></i> </a> </div> <div class="social"> <a id="pinterest-icon" title="Share on Pinterest" target="_blank" href="http://pinterest.com/pin/create/button/?url=https://datebook.sfchronicle.com/movies-tv/mille-bobby-brown-damsel-18703629&media=https://s3.amazonaws.com/sfc-datebook-wordpress/wp-content/uploads/sites/2/2024/03/featured_event3339892-.jpg&description=Review: Millie Bobby Brown commits to weak yet appealing ‘Damsel’"> <i class="icon-pinterest"></i> </a> </div> <div class="social"> <a id="reddit-icon" title="Share on Reddit" target="_blank" href="https://www.reddit.com/submit?url=https://datebook.sfchronicle.com/movies-tv/mille-bobby-brown-damsel-18703629&text=Review: Millie Bobby Brown commits to weak yet appealing ‘Damsel’"> <i class="icon-reddit"></i> </a> </div> <div class="social"> <a id="mail-icon" title="Share via email" href="mailto:?subject=Your friend has shared a Datebook | San Francisco Arts & Entertainment Guide link with you: Review: Millie Bobby Brown commits to weak yet appealing ‘Damsel’&body=Review: Millie Bobby Brown commits to weak yet appealing ‘Damsel’%0A%0Ahttps://datebook.sfchronicle.com/movies-tv/mille-bobby-brown-damsel-18703629%0A%0AThis message was sent via https://datebook.sfchronicle.com."> <i class="icon-mail" aria-hidden="true"></i> </a> </div> <div class="social comments"> <a id="comments-icon" title="Comments" href="#spotim-comments"> <i class="icon-comments" aria-hidden="true"></i> </a> </div> </div> <div class="content-group author"> <ul> <li> <div class="avatar-follow"> <div class="author_image"style="background-image:url(https://s.hdnux.com/photos/20/36/16/4318101/7/square_medium.jpg)" ></div> <div class="details"> <span class="name">Mick LaSalle</span> <div class="follow"> <span>Follow:</span> <div class="icons"> <a id="twitter-icon" title="Follow on Twitter" target = "_blank" href="https://twitter.com/MickLaSalle"> <i class="icon-twitter"></i> </a> <a id="facebook-icon" title="Follow on Facebook" target = "_blank" href="https://www.facebook.com/SFChronicle/"> <i class="icon-facebook"></i> </a> </div> </div> </div> </div> <div class="bio"> <span class="name"> <a class="datebook_get_author_name_html" target = "_blank" href="https://www.sfchronicle.com/author/mick-lasalle/">Mick LaSalle</a> </span> <p class="MsoNormal" style="margin-bottom: 12.0pt;">Mick LaSalle is the film critic for the San Francisco Chronicle, where he has worked since 1985. He is the author of two books on pre-censorship Hollywood, "Complicated Women: Sex and Power in Pre-Code Hollywood" and "Dangerous Men: Pre-Code Hollywood and the Birth of the Modern Man." Both were books of the month on Turner Classic Movies and "Complicated Women" formed the basis of a TCM documentary in 2003, narrated by Jane Fonda. He has written introductions for a number of books, including Peter Cowie's "Joan Crawford: The Enduring Star" (2009). He was a panelist at the Berlin Film Festival and has served as a panelist for eight of the last ten years at the Venice Film Festival. His latest book, a study of women in French cinema, is "The Beauty of the Real: What Hollywood Can Learn from Contemporary French Actresses." </p> <p>He can be reached at <a href="mailto:mlasalle@sfchronicle.com">mlasalle@sfchronicle.com</a>. </p> </div> </li> </ul> </div> </div> </section> <aside> <div class="ad-wrapper medium_rectangle" ><div id="DTBK_AP300"> <script type="text/javascript">/*<![CDATA[*/hearstPlaceAd("DTBK_AP300");/*]]>*/</script></div></div> <div class="ad-wrapper medium_rectangle" ><div id="DTBK_AP300_M"> <script type="text/javascript">/*<![CDATA[*/hearstPlaceAd("DTBK_AP300_M");/*]]>*/</script></div></div> <div class="content-group newsletter articles-content"> <div class="newsletter-form-wrap"> <p>Your weekly guide to Bay Area arts & entertainment.</p> <form class="newsletter-form" onsubmit="DatebookNewsletter.handleSailThruSubmit(this);return false;" novalidate> <input type="hidden" id="lists" name="lists" value= "newsletter_datebook" /> <input type="hidden" id="source" name="source" value= "datebook.sfchronicle.com" /> <input type="email" class="form-control" id="email" placeholder="E-mail Address"> <input type="submit" class="btn btn-primary" id="submit-btn" value="Sign Up"> <!-- <input id="submit-btn" class="btn btn-primary" type="submit" value=""> --> <div class="check-mark"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="white" d="M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z"/></svg></div> </form> <div class="signup-message"></div> </div> </div> <h2><span>More In Movies & TV</span></h2> <div class="content-group related-articles"> <h2> <span>More In Movies & TV</span> </h2> <ul> <li> <a href="https://datebook.sfchronicle.com/movies-tv/m-20190053" class="card article objectcard list-text small " data-date="Feb 26. 2025" data-categories="Movies & TV"> <div class="hoverstate"> <div class="image lazyload " data-lazy-background="https://s3.amazonaws.com/sfc-datebook-wordpress/wp-content/uploads/sites/2/2025/02/featured_event3372806--825x550.jpg" > </div> </div> <div class="details"> <div class="category"> Movies & TV </div> <div class="title"><span>Michelle Trachtenberg’s lasting legacy speaking out against ‘Buffy’ creator Joss Whedon</span></div> <div class="excerpt"> </div> <div class="author">By Tony Bravo </div> </div> </a></li><li> <a href="https://datebook.sfchronicle.com/movies-tv/last-breath-north-sea-diving-accident-20180008" class="card article objectcard list-text small " data-date="Feb 26. 2025" data-categories="Movies & TV"> <div class="hoverstate"> <div class="image lazyload " data-lazy-background="https://s3.amazonaws.com/sfc-datebook-wordpress/wp-content/uploads/sites/2/2025/02/featured_event3372791--825x550.jpg" > </div> </div> <div class="details"> <div class="category"> Movies & TV </div> <div class="title"><span>Review: ‘Last Breath’ suspensefully recounts harrowing 2012 North Sea diving accident</span></div> <div class="excerpt"> </div> <div class="author">By G. Allen Johnson </div> </div> </a></li><li> <a href="https://datebook.sfchronicle.com/movies-tv/riff-raff-review-20180206" class="card article objectcard list-text small " data-date="Feb 25. 2025" data-categories="Movies & TV"> <div class="hoverstate"> <div class="image lazyload " data-lazy-background="https://s3.amazonaws.com/sfc-datebook-wordpress/wp-content/uploads/sites/2/2025/02/featured_event3372661--825x550.jpg" > </div> </div> <div class="details"> <div class="category"> Movies & TV </div> <div class="title"><span>Review: ‘Riff Raff’ blends humor, family drama with a touch of Tarantino-esque violence</span></div> <div class="excerpt"> </div> <div class="author">By Bob Strauss </div> </div> </a></li><li> <a href="https://datebook.sfchronicle.com/movies-tv/kathleen-kennedy-lucasfilm-departure-20187101" class="card article objectcard list-text small " data-date="Feb 25. 2025" data-categories="Movies & TV"> <div class="hoverstate"> <div class="image lazyload " data-lazy-background="https://s3.amazonaws.com/sfc-datebook-wordpress/wp-content/uploads/sites/2/2025/02/featured_event3372637--825x550.jpg" > </div> </div> <div class="details"> <div class="category"> Movies & TV </div> <div class="title"><span>Lucasfilm president Kathleen Kennedy reportedly stepping down at end of year</span></div> <div class="excerpt"> </div> <div class="author">By G. Allen Johnson </div> </div> </a></li><li> <a href="https://datebook.sfchronicle.com/movies-tv/my-dead-friend-zoe-review-20178011" class="card article objectcard list-text small " data-date="Feb 24. 2025" data-categories="Movies & TV"> <div class="hoverstate"> <div class="image lazyload " data-lazy-background="https://s3.amazonaws.com/sfc-datebook-wordpress/wp-content/uploads/sites/2/2025/02/featured_event3372578--825x550.jpg" > </div> </div> <div class="details"> <div class="category"> Movies & TV </div> <div class="title"><span>Review: Humor, fine acting and real issues make ‘My Dead Friend Zoe’ a ghost story like no other</span></div> <div class="excerpt"> </div> <div class="author">By Bob Strauss </div> </div> </a></li> </ul> </div> <!-- Related event --> <!-- Related event --> <!-- Related Movie --> <!-- Related Movie --> <!-- Slot --> <div class="ad-wrapper medium_rectangle" ><div id="DTBK_BP300"> <script type="text/javascript">/*<![CDATA[*/hearstPlaceAd("DTBK_BP300");/*]]>*/</script></div></div> <!-- Slot --> </aside> <div class="after-content"> <div class="content-group related-articles grid"> <h2><span>More In Movies & TV</span></h2> <ul> <li id="NTVDTBKArticle1" > <a href="https://datebook.sfchronicle.com/movies-tv/the-monkey-review-stephen-king-20163883" class="card article objectcard list-text large " data-date="Feb 19. 2025" data-categories="Movies & TV"> <div class="hoverstate"> <div class="image lazyload " data-lazy-background="https://s3.amazonaws.com/sfc-datebook-wordpress/wp-content/uploads/sites/2/2025/02/featured_event3372241--825x550.jpg" > </div> </div> <div class="details"> <div class="category"> Movies & TV </div> <div class="title"><span>Review: Stephen King’s ‘The Monkey’ adaptation piles up the bodies, but to what end?</span></div> <div class="excerpt"> </div> <div class="author">By G. Allen Johnson </div> </div> </a></li><li > <a href="https://datebook.sfchronicle.com/movies-tv/cleaner-review-daisy-ridley-20163852" class="card article objectcard list-text large " data-date="Feb 17. 2025" data-categories="Movies & TV"> <div class="hoverstate"> <div class="image lazyload " data-lazy-background="https://s3.amazonaws.com/sfc-datebook-wordpress/wp-content/uploads/sites/2/2025/02/featured_event3372045--825x550.jpg" > </div> </div> <div class="details"> <div class="category"> Movies & TV </div> <div class="title"><span>Review: Daisy Ridley gets a ‘Die Hard’-style workout in fast, effective ‘Cleaner’</span></div> <div class="excerpt"> </div> <div class="author">By Mick LaSalle </div> </div> </a></li><li > <a href="https://datebook.sfchronicle.com/movies-tv/ask-mick-category-fraud-oscars-20163826" class="card article objectcard list-text large " data-date="Feb 17. 2025" data-categories="Movies & TV"> <div class="hoverstate"> <div class="image lazyload " data-lazy-background="https://s3.amazonaws.com/sfc-datebook-wordpress/wp-content/uploads/sites/2/2025/02/featured_event3372042--825x550.jpg" > </div> </div> <div class="details"> <div class="category"> Movies & TV </div> <div class="title"><span>‘Category fraud’ is with us, once again, with this year’s Oscar nominations</span></div> <div class="excerpt"> </div> <div class="author">By Mick LaSalle </div> </div> </a></li> </ul> </div> <div class="content-group related-events list"> <h2><span>Related Movies</span></h2> <ul> <li id="NTVDTBKEvent1" > <a href="https://datebook.sfchronicle.com/movie-info/jujutsu-kaisen-0-the-movie/" class="card event movie-info objectcard " data-date="" data-categories="movies-tv" data-critics-pick="false" data-genre="anime" data-rating="" data-rootid="21318844" data-tmsid="MV017724200000" > <div class="hoverstate"> <div class="badges"> </div> <div class="image lazyload portrait" data-lazy-background="https://s3.amazonaws.com/sfc-datebook-wordpress/wp-content/uploads/sites/2/2022/02/featured_movieMV017724200000-.jpg" > </div> </div> <div class="info"> <div class="details"> <div class="movie-message"> <i class="icon-movies" aria-hidden="true"></i> Find Showtimes </div> <div class="title"><span>Jujutsu Kaisen 0: The Movie</span></div> </div> <div class="genre-and-rating"> <div class="genre">Anime</div> <div class="rating"></div> </div> </div> </a></li><li> <a href="https://datebook.sfchronicle.com/movie-info/better-days/" class="card event movie-info objectcard " data-date="" data-categories="movies-tv" data-critics-pick="false" data-genre="drama" data-rating="" data-rootid="17025812" data-tmsid="MV012701080000" > <div class="hoverstate"> <div class="badges"> </div> <div class="image lazyload " data-lazy-background="https://s3.amazonaws.com/sfc-datebook-wordpress/wp-content/uploads/sites/2/2019/10/featured_movieMV012701080000-.jpg" > </div> </div> <div class="info"> <div class="details"> <div class="movie-message"> <i class="icon-movies" aria-hidden="true"></i> Find Showtimes </div> <div class="title"><span>Better Days</span></div> </div> <div class="genre-and-rating"> <div class="genre">Drama</div> <div class="rating"></div> </div> </div> </a></li><li> <a href="https://datebook.sfchronicle.com/movie-info/firestarter/" class="card event movie-info objectcard " data-date="" data-categories="movies-tv" data-critics-pick="false" data-genre="horror" data-rating="" data-rootid="21617162" data-tmsid="MV017923840000" > <div class="hoverstate"> <div class="badges"> </div> <div class="image lazyload " data-lazy-background="https://s3.amazonaws.com/sfc-datebook-wordpress/wp-content/uploads/sites/2/2022/04/featured_movieMV017923840000-.jpg" > </div> </div> <div class="info"> <div class="details"> <div class="movie-message"> <i class="icon-movies" aria-hidden="true"></i> Find Showtimes </div> <div class="title"><span>Firestarter</span></div> </div> <div class="genre-and-rating"> <div class="genre">Horror</div> <div class="rating"></div> </div> </div> </a></li> </ul> </div> <a name="spotim-comments"></a><div id="spotim-comments" class="hdn-comments" data-js="//launcher.spot.im/spot/sp_e9s18MG6" data-spot-id="sp_e9s18MG6" data-post-url="https://datebook.sfchronicle.com/movies-tv/mille-bobby-brown-damsel-18703629" data-post-id="premiumsfgate-datebook-3339892" data-spotim-module="spotim-launcher" data-article-tags="Movies & TV"> <div class="treg-gya-commenting-bar"></div> </div> <script type="text/javascript"> function GetCookie(Name) { var cookies=document.cookie; if (cookies.indexOf(Name+'=')==-1) return null; var start=cookies.indexOf(Name+'=')+(Name.length+1); var finish=cookies.substring(start,cookies.length); finish=(finish.indexOf(';')==-1)?cookies.length:start+finish.indexOf(';'); return unescape(cookies.substring(start,finish)); } function SaveCookie(cname,cvalue,cdays,cpath) { ex = new Date; ex.setTime(ex.getTime() + (cdays*86400000)); if (cpath == null) { cpath = "/" } else { cpath = "; path=" + cpath } document.cookie=cname + '=' + cvalue + '; expires=' + ex.toGMTString() + cpath + "; domain=" + HDN.cookieDomain; } </script> <script type="text/javascript"> HDN_spotim_info_propid = "sfgate"; if ( document.readyState === "complete" || (document.readyState !== "loading" && !document.documentElement.doScroll)) { HDN.spotim.launch('premium', true); } else { document.addEventListener("DOMContentLoaded", function() { HDN.spotim.launch('premium', true); }); } </script> </div> </article> <div class="clearfix"></div> <!-- stored post cached-post-3339892 to redis --> <div class="clearfix"></div> </div><!-- #content --> <div class="clearfix"></div> <footer class="nav-bottom"> <div class="footer-content clearfix"> <div class="top"> <div class="group"> <a href="https://datebook.sfchronicle.com" class="logo white"></a> <a href="https://www.sfchronicle.com" class="parent-site-logo"></a> <div class="clearfix"></div> <div class="social-icons"> <h3>Follow Us</h3> <div class="icons"> <a class="fb-link" href="https://www.facebook.com/SFChronicleDatebook/" target="_blank"><i class="icon-facebook" aria-hidden="true"></i></a> <a class="twtr-link" href="https://twitter.com/sfc_datebook" target="_blank"><i class="icon-twitter" aria-hidden="true"></i></a> <a class="insta-link" href="https://www.instagram.com/sfchronicle_datebook/" target="_blank"><i class="icon-instagram" aria-hidden="true"></i></a> <a class="pinterest-link" href="https://www.pinterest.com/sfchronicle/" target="_blank"><i class="icon-pinterest" aria-hidden="true"></i></a> </div> </div> </div> <div class="group"> <div class="hcsf_links"> <h3>Websites</h3> <div class="clearfix"></div> <div class="hcsf_linklist"> <a href="https://www.sfchronicle.com" target="_blank">SFChronicle</a> <a href="https://www.sfgate.com" target="_blank">SFGATE</a> <a href="https://datebook.sfchronicle.com" target="_blank">Datebook</a> <a href="https://www.greenstate.com" target="_blank">GreenState</a> </div> </div> <div class="hcsf_links"> <h3>About</h3> <div class="clearfix"></div> <div class="hcsf_linklist"> <a href="https://www.hearst.com/newspapers/san-francisco-chronicle" target="_blank">Our Company</a> <a href="https://www.sfchronicle.com/terms_of_use/" target="_blank">Terms of Use</a> <a href="https://www.sfchronicle.com/privacy_policy/" target="_blank">Privacy Notice</a> <a href="https://www.sfchronicle.com/privacy_policy/#caprivacyrights" target="_blank">CA Notice at Collection</a> <a href="https://www.sfchronicle.com/privacy_policy/#shinethelight" target="_blank">Your CA Privacy Rights (Shine the Light)</a> <a href="https://www.sfchronicle.com/privacy_policy/#daaoptout" target="_blank">DAA Industry Opt Out</a> <a href="https://eevd.fa.us6.oraclecloud.com/hcmUI/CandidateExperience/en/sites/CX_11007" target="_blank">Careers</a> <a href="https://marketing.sfgate.com/advertise-with-us-today" target="_blank">Advertising</a> </div> </div> <div class="hcsf_links"> <h3>Contact</h3> <div class="clearfix"></div> <div class="hcsf_linklist"> <a href="https://www.sfchronicle.com/customer_service" target="_blank">Customer Service</a> <a href="https://www.sfchronicle.com/faq" target="_blank">FAQ</a> <a href="https://www.sfchronicle.com/newsroom_contacts" target="_blank">Newsroom Contacts</a> </div> </div> <div class="hcsf_links"> <h3>Services</h3> <div class="clearfix"></div> <div class="hcsf_linklist"> <a href="https://subscription.sfchronicle.com/" target="_blank">Subscriber Services</a> <a href="https://www.sfchronicle.com/e-edition" target="_blank">e-Edition</a> <a href="https://www.sfchronicle.com/mobile-apps/" target="_blank">App</a> <a href="https://www.sfchronicle.com/archive" target="_blank">Archives</a> <a href="https://sfchronicle.myshopify.com/" target="_blank">Store</a> <a href="https://subscription.sfchronicle.com/checkout/439/883/?siteID=SFC&origin=footer&ipid=datebook" target="_blank">Subscription Offers</a> </div> </div> </div> </div> <div class="top"> <div class="group"></div> <div class="large-footer-link"> <a href="https://www.sfchronicle.com/mydata/" target="_blank" role="listitem">Your Privacy Choices (Opt Out of Sale/Targeted Ads)</a> </div> </div> <div class="bottom"> <div class="copyright-wrap"> <div class="links"> </div> <p class="copyright">© 2025 Hearst Communications, Inc.</p> </div> </div> </div> </footer> </html> </div><!-- #page --> <script> ( function ( body ) { 'use strict'; body.className = body.className.replace( /\btribe-no-js\b/, 'tribe-js' ); } )( document.body ); </script> <script> /* <![CDATA[ */var tribe_l10n_datatables = {"aria":{"sort_ascending":": activate to sort column ascending","sort_descending":": activate to sort column descending"},"length_menu":"Show _MENU_ entries","empty_table":"No data available in table","info":"Showing _START_ to _END_ of _TOTAL_ entries","info_empty":"Showing 0 to 0 of 0 entries","info_filtered":"(filtered from _MAX_ total entries)","zero_records":"No matching records found","search":"Search:","all_selected_text":"All items on this page were selected. ","select_all_link":"Select all pages","clear_selection":"Clear Selection.","pagination":{"all":"All","next":"Next","previous":"Previous"},"select":{"rows":{"0":"","_":": Selected %d rows","1":": Selected 1 row"}},"datepicker":{"dayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"dayNamesShort":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"dayNamesMin":["S","M","T","W","T","F","S"],"monthNames":["January","February","March","April","May","June","July","August","September","October","November","December"],"monthNamesShort":["January","February","March","April","May","June","July","August","September","October","November","December"],"monthNamesMin":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"nextText":"Next","prevText":"Prev","currentText":"Today","closeText":"Done","today":"Today","clear":"Clear"}};var tribe_system_info = {"sysinfo_optin_nonce":"a1035cb243","clipboard_btn_text":"Copy to clipboard","clipboard_copied_text":"System info copied","clipboard_fail_text":"Press \"Cmd + C\" to copy"};/* ]]> */ </script><script type='text/javascript' src='https://datebook.sfchronicle.com/wp-content/plugins/sfc-countdown-unit/js/countdown.js?ver=1.0' id='sfc-countdown-unit-js'></script> <script type='text/javascript' src='https://www.sfchronicle.com/js/hdn/modules/spotimcomments.js' id='sfc-spot-im-comments-js'></script> <script type='text/javascript' src='https://datebook.sfchronicle.com/wp-content/plugins/sfc-spot-im-comments/js/spotimcommentsoverride.js?ver=1.0' id='sfc-spot-im-comments-override-js'></script> <script type='text/javascript' src='https://datebook.sfchronicle.com/wp-content/themes/datebook-2019-base/assets/js/datebook.js?ver=5.7.2-p25-20241030-0930' id='datebook-js-js'></script> <script type='text/javascript' id='datebook-js-js-after'> DatebookSearchPage.datebookPickLabel="Datebook Pick"; DatebookCard.datebookPickLabel ="Datebook Pick"; </script> <script type='text/javascript' src='https://datebook.sfchronicle.com/wp-includes/js/wp-embed.min.js?ver=5.7.2' id='wp-embed-js'></script> <style> /*hide the 'dek' 2023 feb 7 tmetzger*/ body.post-template-default .entry-header h2{display:none;} </style> <script> /*broken URL in constants, 6april2021 tmetzger*/ document.addEventListener("DOMContentLoaded", function () { var subButton = document.querySelector("#subscription .btn"); if(subButton){ console.log("sub button"); subButton.href = "https://subscription.sfchronicle.com/checkout/439/883/?siteID=SFC&origin=button&ipid=datebook"; } else{ console.log("no button"); } }, false); </script> <style> /*fall guide vqn 2019 3 oct*/ BODY.page-template-datebook-collections-template #page #content .main-content .panel.top .content-wrap { font-size: calc(16px + (24 - 19.5) * ((100vw - 376px) / (1146 - 376))); line-height: calc(20px + (24 - 19.5) * ((100vw - 376px) / (1146 - 376))); max-width:720px; margin:auto; border-bottom:0; } BODY.page-template-datebook-collections-template #page #content .main-content .panel.top .content-wrap p { display:inline; } BODY.page-template-datebook-collections-template #page #content .main-content .panel.bottom .content-group.articles-content.articles-by-category:first-of-type{ border-top:1px solid #d3d3d3; } BODY.page-template-datebook-collections-template #page #content .main-content .panel.top h1 { font-size: calc(30px + (46 - 37) * ((100vw - 376px) / (1146 - 376))); line-height: calc(32px + (46 - 37) * ((100vw - 376px) / (1146 - 376))); } </style> <style> /*fix for collections, prob from archive update 16 oct*/ BODY.page-template-datebook-collections-template #page #content .main-content .panel.bottom .content-group.articles-content.articles-by-category:first-of-type { border: none; } </style> <script> /*misspelled "newsrooom" footer link 2021 aug 1 tmetzger*/ var nr = document.querySelector("a[href$='newsroom_contacts']"); if(nr){ nr.innerText = "Contact Newsroom" } </script> <script> //open all links in the body of an article in a new tab -tmetzger 2021 sep 9 document.addEventListener("DOMContentLoaded", function () { document.querySelectorAll("body.post-template-default .interior p a").forEach( function(item){ item.setAttribute('target', '_blank'); } ); }, false); </script> <style> /*styles for fugazi countdown clock units 2021 sep 22 tmetzger*/ HTML BODY.single-guide #page aside .countdown-container , BODY.single-post #page aside .countdown-container { margin-bottom:20px; } HTML BODY.single-guide #page aside .countdown-container .countdown-unit, BODY.single-post #page aside .countdown-container .countdown-unit { bottom: -2px; width: 66%; right: 0; } HTML BODY.home .countdown-container .countdown-unit { right:35%; } HTML BODY.home .countdown-container .countdown-unit .digit-frame .digit, HTML BODY.home .countdown-container .countdown-unit .digit-frame .digit-label, HTML BODY.single-post .countdown-container .countdown-unit .digit-frame .digit, HTML BODY.single-post .countdown-container .countdown-unit .digit-frame .digit-label, HTML BODY.single-guide .countdown-container .countdown-unit .digit-frame .digit, HTML BODY.single-guide .countdown-container .countdown-unit .digit-frame .digit-label { color:#fff; } HTML BODY .countdown-container .countdown-unit .digit-frame .digit, HTML BODY .countdown-container .countdown-unit .digit-frame .digit-label { color:#FFF; } @media screen and (max-width: 600px) { BODY.page-template-search .countdown-container .countdown-unit { bottom: 2px; left: 0; } } @media screen and (min-width: 600px) { HTML BODY.page-template-search .countdown-container .countdown-unit .digit-frame .digit, HTML BODY.page-template-search .countdown-container .countdown-unit .digit-frame .digit-label { color:#FFF; } } @media screen and (max-width: 927px) and (min-width: 600px) { BODY.page-template-search .countdown-container .countdown-unit { right: 0px; } } @media screen and (min-width:928px){ HTML BODY.page-template-search .countdown-container .countdown-unit { bottom: 64px; right: 0px; width: 308px; } } @media screen and (min-width:1200px){ HTML BODY.page-template-search .countdown-container .countdown-unit { bottom: 68px; right: 18px; width: 308px; } HTML BODY.page-template-search .countdown-container .countdown-unit .digit-frame .digit { font-size: 40px; height: 34px; line-height: 34px; } HTMl BODY.page-template-search .countdown-container .countdown-unit .digit-frame .digit-label { font-size: 15px; } } </style> <script> /*patches for category tags 2023-02-06 remove soon tmetzger*/ if(document.querySelector('[href*="/anti-valentines-day-2023-say-no-thanks-to-romance-with-these-bay-area-events')){ document.querySelector('[href*="/anti-valentines-day-2023-say-no-thanks-to-romance-with-these-bay-area-events"] .category').innerHTML = "Entertainment"; } if(document.querySelector('[href*="/valentines-day-2023-celebrate-love-with-bay-area-music-arts-and-more-events')){ document.querySelector('[href*="/valentines-day-2023-celebrate-love-with-bay-area-music-arts-and-more-events"] .category').innerHTML = "Entertainment"; } if(document.querySelector('[href*="/valentines-day-2023-hot-picks-for-singles-in-the-s-f-bay-area')){ document.querySelector('[href*="/valentines-day-2023-hot-picks-for-singles-in-the-s-f-bay-area"] .category').innerHTML = "Entertainment"; } </script> <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "NewsArticle", "mainEntityOfPage": { "@type": "WebPage", "@id": "https://datebook.sfchronicle.com/movies-tv/mille-bobby-brown-damsel-18703629" }, "headline": "Review: Millie Bobby Brown commits to weak yet appealing ‘Damsel’", "image": [ "https://s3.amazonaws.com/sfc-datebook-wordpress/wp-content/uploads/sites/2/2024/03/featured_event3339892-.jpg" ], "datePublished": "2024-03-06 15:28:18", "dateModified": "2024-03-06 17:36:19", "author": { "@type": "Person", "name": "Mick LaSalle" }, "publisher": { "@type": "Organization", "name": "Datebook | San Francisco Arts & Entertainment Guide", "logo": { "@type": "ImageObject", "url": "https://datebook.sfchronicle.com/wp-content/themes/datebook-2018/assets/img/social_default.jpg" } }, "description": "Millie Bobby Brown does her best to make something out of “Damsel.” Although the fantasy film is heavy on dragons and light on plot, it proves to be an effective vehicle for the young actress. " } </script> <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "BreadcrumbList", "itemListElement": [ { "@type": "ListItem", "position": 1, "item": { "@id": "https://datebook.sfchronicle.com/category/movies-tv", "name": "Datebook | San Francisco Arts & Entertainment Guide articles and events in Movies & TV" } } ] } </script> <script type="text/javascript">window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","licenseKey":"1f719b4b96","applicationID":"87586888","transactionName":"blUBZBEDChdRVEFeX1cfIlMXCwsKH0RcWVdVVQ==","queueTime":0,"applicationTime":349,"atts":"QhICElkZGRk=","errorBeacon":"bam.nr-data.net","agent":""}</script></body> </html>